using System; using System.Collections; using System.Collections.Generic; public class Program { public static void Main() { string line; while ((line = System.Console.ReadLine ()) != null) { // 注意 while 处理多个 case int n = int.Parse(line); int[] a = new int[n]; line = Console.ReadLine(); string[] tokens = line.Split(' '); for(int i = 0; i < n; i++) a[i] = int.Parse(tokens[i]); int sum = 0; foreach(int i in a) sum += i; if(((float)sum / n) % 1 != 0) Console.WriteLine(-1); else{ int avg = sum / n; int remain = avg % 2; int count = 0; foreach(int ai in a){ if(ai % 2 != remain){ count = -1; break; } else{ if(ai > avg){ count += (ai - avg) / 2; } } } Console.WriteLine(count); } } } }
复杂度O(N)。先计算苹果的平均值,平均值不为整数直接输出-1;对每只牛的苹果遍历,若某只牛的苹果和平均值的奇偶不同,令
count=-1;break;若奇偶相同,且苹果数大于平均值,计算每多2个,count++