http://codeforces.com/contest/672/problem/D
题目大意:
有n个人,每个人有pi的钱,然后可以由如下操作,每次都可以挑选一个最富有的人,把它的钱给最穷的人。但是如果所有的人的钱都相等,那么就不需要执行该操作,该操作最多执行k次。问,贫富之间最大的差值是多少。
思路:
感觉这道题我是以一个奇怪的姿势过了。。。
首先我们sort一下每个人的钱,然后并且统计有几个人的钱数相同。然后再分别从最小的开始加钱和从最大的开始扣钱,这两种每个都计算一次,看看k次操作,以后最小的和最大的人的钱能是多少。
然后可能出现以下的情况
情况1:
右往左扣钱以后的val仍然>=左往右加钱的
如果是大于,那么就是两者之差
如果是等于,如果任意一段的转移的k大于0,那么之间的差值就是1(请仔细想一下)
情况2:
右往左扣钱以后的val<左往右加钱的,如果p的总钱数%n=0,说明能均分,即为0.否则为1.