using System; using System.Collections.Generic; using System.Linq; class Program { static string InputPattern = "Input5"; static List GetInputList() { var WillReturn = new List(); if (InputPattern == "Input1") { WillReturn.Add("2"); WillReturn.Add("1 1"); WillReturn.Add("3 0"); //1 } else if (InputPattern == "Input2") { WillReturn.Add("4"); WillReturn.Add("0 0"); WillReturn.Add("0 0"); WillReturn.Add("0 0"); WillReturn.Add("0 0"); //0 } else if (InputPattern == "Input3") { WillReturn.Add("2"); WillReturn.Add("0 0"); WillReturn.Add("1 0"); //-1 } else if (InputPattern == "Input4") { WillReturn.Add("4"); WillReturn.Add("30 0"); WillReturn.Add("20 10"); WillReturn.Add("10 20"); WillReturn.Add("0 30"); //90 } else { string wkStr; while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr); } return WillReturn; } static void Main() { List InputList = GetInputList(); var ResultSet = new List(); foreach (string EachStr in InputList.Skip(1)) { int[] wkArr = EachStr.Split(' ').Select(X => int.Parse(X)).ToArray(); ResultSet.Add(wkArr[0] + 4 * wkArr[1]); } //2を法として余りが0の集合 List Mod0List = ResultSet.FindAll(X => X % 2 == 0); //2を法として余りが1の集合 List Mod1List = ResultSet.FindAll(X => X % 2 == 1); //両方とも空集合でない場合 if (Mod0List.Count > 0 && Mod1List.Count > 0) { Console.WriteLine(-1); return; } List WkList = (Mod0List.Count == 0 ? Mod1List : Mod0List); int wkMax = WkList.Max(); long Answer = 0; WkList.ForEach(X => Answer += (wkMax - X) / 2); Console.WriteLine(Answer); } }