【发布时间】:2012-11-09 23:04:55
【问题描述】:
我正在从 codeforces 实践问题中解决问题。 我无法找到有效的解决方案。 如何解决以下问题? 我只能想到一个蛮力解决方案
Polycarpus 有一个数组,由 n 个整数 a1, a2, ..., an 组成。当数组中的数字匹配时,Polycarpus 喜欢它。这就是为什么他希望数组有尽可能多的相等数字。为此,Polycarpus 多次执行以下操作:
他选择数组ai、aj(i ≠ j)的两个元素; 他同时将数字 ai 加 1,将数字 aj 减 1,即执行 ai = ai + 1 和 aj = aj - 1。 给定的操作恰好改变了两个不同的数组元素。 Polycarpus 可以无限次应用所描述的操作。
现在他想知道如果他执行任意数量的此类操作,他可以获得多少相等的数组元素。帮助 Polycarpus。
输入 第一行包含整数 n (1 ≤ n ≤ 105) — 数组大小。第二行包含以空格分隔的整数 a1, a2, ..., an (|ai| ≤ 104) — 原始数组。
输出 打印一个整数——如果他执行任意数量的给定操作,他可以获得的相等数组元素的最大数量。
Sample test(s)
input
2
2 1
output
1
input
3
1 4 1
output
3
【问题讨论】:
标签: algorithm