private static GooglerCase[] ReadFile(string filepath) { string[] lines = File.ReadAllLines(filepath); int cases = int.Parse(lines[0]); var result = new GooglerCase[cases]; for (int caseNo = 1; caseNo < lines.Length; caseNo++) { var items = lines[caseNo].Split(' ').Select(s => int.Parse(s)).ToArray(); result[caseNo - 1] = new GooglerCase { N = items[0], S = items[1], p = items[2], t = items.Where((t, i) => i > 2).ToArray() }; } return(result); }
private static int SolveCase(GooglerCase gCase) { int result = 0; int surprisingUnused = gCase.S; foreach (var t in gCase.t) { if (t >= gCase.p + 2 * Math.Max(gCase.p - 1, 0)) { result++; } else if (surprisingUnused > 0 && t >= gCase.p + 2 * Math.Max(gCase.p - 2, 0)) { result++; surprisingUnused--; } } return(result); }