Advertisement
Guest User

Untitled

a guest
Apr 14th, 2012
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.72 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.IO;
  6.  
  7. namespace Problem_2
  8. {
  9.     class Program
  10.     {
  11.         static void Main( string[] args )
  12.         {
  13.             string[] lines = File.ReadAllLines( "input.txt" );
  14.             int cases = Int32.Parse( lines[0] );
  15.             string output = "";
  16.  
  17.             for ( int i = 1; i < lines.Length; i++ )
  18.             {
  19.                 output += "Case #" + i + ": " + Solve( lines[i].Split( ' ' ) ) + "\r\n";
  20.             }
  21.  
  22.             File.WriteAllText( "output.txt", output );
  23.         }
  24.  
  25.         static int Solve( string[] rawData )
  26.         {
  27.             int[] scores = new int[rawData.Length - 3];
  28.             for ( int i = 3; i < rawData.Length; i++ )
  29.                 scores[i - 3] = Int32.Parse( rawData[i] );
  30.             int googlers = Int32.Parse( rawData[0] );
  31.             int triplets = Int32.Parse( rawData[1] );
  32.             int best = Int32.Parse( rawData[2] );
  33.  
  34.             int maxGooglers = 0;
  35.  
  36.             for ( int i = 0; i < scores.Length; i++ )
  37.             {
  38.                 // First try without triplets
  39.                 for ( int s1 = 0; s1 <= 10; s1++ )
  40.                     for ( int s2 = 0; s2 <= 10; s2++ )
  41.                         for ( int s3 = 0; s3 <= 10; s3++ )
  42.                         {
  43.                             int sum = s1 + s2 + s3;
  44.                             if ( sum != scores[i] ) continue;
  45.                             if ( Math.Abs( s1 - s2 ) > 1 || Math.Abs( s2 - s3 ) > 1 || Math.Abs( s3 - s1 ) > 1 ) continue;
  46.  
  47.                             if ( s1 == best || s2 == best || s3 == best )
  48.                             {
  49.                                 maxGooglers++;
  50.                                 goto next;
  51.                             }
  52.                         }
  53.  
  54.                 // Then attempt WITH triplets
  55.                 for ( int s1 = 0; s1 <= 10; s1++ )
  56.                     for ( int s2 = 0; s2 <= 10; s2++ )
  57.                         for ( int s3 = 0; s3 <= 10; s3++ )
  58.                         {
  59.                             int sum = s1 + s2 + s3;
  60.                             if ( sum != scores[i] ) continue;
  61.                             if ( ( Math.Abs( s1 - s2 ) > 1 || Math.Abs( s2 - s3 ) > 1 || Math.Abs( s3 - s1 ) > 1 ) && triplets == 0 ) continue;
  62.  
  63.                             if ( s1 == best || s2 == best || s3 == best )
  64.                             {
  65.                                 maxGooglers++;
  66.                                 triplets--;
  67.                                 goto next;
  68.                             }
  69.                         }
  70.  
  71.             next:
  72.                 continue;
  73.             }
  74.            
  75.             return maxGooglers;
  76.         }
  77.     }
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement