Advertisement
stanevplamen

02.09.01.02.GreedyDwarfs

Jun 19th, 2013
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.87 KB | None | 0 0
  1. using System;
  2. using System.Text.RegularExpressions;
  3.  
  4. class GreedyDwarfs
  5. {
  6.     //static string valley = "1, 3, -6, 7, 4 ,1, 12";
  7.     //static string[] valArray = SplitString(valley);
  8.     //static int[] valNumbArray = ConvertToInt(valArray);
  9.     //static int sum = 0;
  10.  
  11.     static void Main()
  12.     {
  13.         int maxSum = int.MinValue;
  14.         int sum = 0;
  15.         string valley = Console.ReadLine();
  16.         string[] valArray = SplitString(valley);
  17.         int[] valNumbArray = ConvertToInt(valArray);
  18.         int[] valNumbArrayRestore = ConvertToInt(valArray);
  19.         int patterns = int.Parse(Console.ReadLine());
  20.         string[] firstPattern = new string[patterns];
  21.  
  22.         for (int i = 0; i < patterns; i++)
  23.         {
  24.             firstPattern[i] = Console.ReadLine();
  25.         }
  26.         for (int i = 0; i < firstPattern.Length; i++)
  27.         {
  28.             string[] firstArray = SplitString(firstPattern[i]);
  29.             int[] firstNumbArray = ConvertToInt(firstArray);
  30.  
  31.             sum = FindWantedSum(firstNumbArray, valNumbArray);
  32.             if (maxSum < sum)
  33.             {
  34.                 maxSum = sum;
  35.             }
  36.             for (int j = 0; j < valNumbArrayRestore.Length; j++)
  37.             {
  38.                 valNumbArray[j] = valNumbArrayRestore[j];
  39.             }
  40.         }
  41.         Console.WriteLine(maxSum);
  42.  
  43.     }
  44.  
  45.     static string[] SplitString(string toSplit)
  46.     {
  47.     //    string[] splitedArray =
  48.     //toSplit.Split(new char[] {','}, StringSplitOptions.RemoveEmptyEntries);
  49.         //Regex regex = new Regex(@"\?\s*|\s+|,\s*|\.\s*|!\s*");
  50.         //string[] splitedArray = regex.Split(toSplit);
  51.         string[] splitters = new string[] { ", ", ",", " ,", ",\n", ",\\n", " ", " \\n", "\\n " + Environment.NewLine };
  52.         string[] splitedArray = toSplit.Split(splitters, StringSplitOptions.None);
  53.         return splitedArray;
  54.     }
  55.  
  56.     static int[] ConvertToInt(string[] arrayToConvert)
  57.     {
  58.         int[] numbArray = new int [arrayToConvert.Length];
  59.  
  60.         for (int i = 0; i < arrayToConvert.Length; i++)
  61.         {
  62.             numbArray[i] = int.Parse(arrayToConvert[i].Trim());          
  63.         }
  64.         return numbArray;
  65.     }
  66.  
  67.     static int FindWantedSum(int[] firstNumbArray, int[] valNumbArray)
  68.     {
  69.         int sum = 0;
  70.         int col = 0;
  71.         for (int i = 0; i < 10001; i++)
  72.         {
  73.             if (!InRange(col, valNumbArray) || valNumbArray[col] == -1001)
  74.             {
  75.                 return sum;
  76.             }
  77.  
  78.             int currentSum = valNumbArray[col];
  79.             sum = sum + currentSum;
  80.  
  81.             valNumbArray[col] = -1001;
  82.             col = col + firstNumbArray[i % firstNumbArray.Length];
  83.         }
  84.         return sum;
  85.     }
  86.  
  87.     static bool InRange(int col, int[] valNumbArray)
  88.     {
  89.         bool colInRange = col >= 0 && col < valNumbArray.Length;
  90.         return colInRange;
  91.     }
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement