Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Text.RegularExpressions;
- class GreedyDwarfs
- {
- //static string valley = "1, 3, -6, 7, 4 ,1, 12";
- //static string[] valArray = SplitString(valley);
- //static int[] valNumbArray = ConvertToInt(valArray);
- //static int sum = 0;
- static void Main()
- {
- int maxSum = int.MinValue;
- int sum = 0;
- string valley = Console.ReadLine();
- string[] valArray = SplitString(valley);
- int[] valNumbArray = ConvertToInt(valArray);
- int[] valNumbArrayRestore = ConvertToInt(valArray);
- int patterns = int.Parse(Console.ReadLine());
- string[] firstPattern = new string[patterns];
- for (int i = 0; i < patterns; i++)
- {
- firstPattern[i] = Console.ReadLine();
- }
- for (int i = 0; i < firstPattern.Length; i++)
- {
- string[] firstArray = SplitString(firstPattern[i]);
- int[] firstNumbArray = ConvertToInt(firstArray);
- sum = FindWantedSum(firstNumbArray, valNumbArray);
- if (maxSum < sum)
- {
- maxSum = sum;
- }
- for (int j = 0; j < valNumbArrayRestore.Length; j++)
- {
- valNumbArray[j] = valNumbArrayRestore[j];
- }
- }
- Console.WriteLine(maxSum);
- }
- static string[] SplitString(string toSplit)
- {
- // string[] splitedArray =
- //toSplit.Split(new char[] {','}, StringSplitOptions.RemoveEmptyEntries);
- //Regex regex = new Regex(@"\?\s*|\s+|,\s*|\.\s*|!\s*");
- //string[] splitedArray = regex.Split(toSplit);
- string[] splitters = new string[] { ", ", ",", " ,", ",\n", ",\\n", " ", " \\n", "\\n " + Environment.NewLine };
- string[] splitedArray = toSplit.Split(splitters, StringSplitOptions.None);
- return splitedArray;
- }
- static int[] ConvertToInt(string[] arrayToConvert)
- {
- int[] numbArray = new int [arrayToConvert.Length];
- for (int i = 0; i < arrayToConvert.Length; i++)
- {
- numbArray[i] = int.Parse(arrayToConvert[i].Trim());
- }
- return numbArray;
- }
- static int FindWantedSum(int[] firstNumbArray, int[] valNumbArray)
- {
- int sum = 0;
- int col = 0;
- for (int i = 0; i < 10001; i++)
- {
- if (!InRange(col, valNumbArray) || valNumbArray[col] == -1001)
- {
- return sum;
- }
- int currentSum = valNumbArray[col];
- sum = sum + currentSum;
- valNumbArray[col] = -1001;
- col = col + firstNumbArray[i % firstNumbArray.Length];
- }
- return sum;
- }
- static bool InRange(int col, int[] valNumbArray)
- {
- bool colInRange = col >= 0 && col < valNumbArray.Length;
- return colInRange;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement