Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }