E - Decrease (Judge ver.)


Time limit : 2sec / Memory limit : 256MB

Score : 600 points

Problem Statement

We have a sequence of length N consisting of non-negative integers. Consider performing the following operation on this sequence until the largest element in this sequence becomes N−1 or smaller. (The operation is the same as the one in Problem D.)

  • Determine the largest element in the sequence (if there is more than one, choose one). Decrease the value of this element by N, and increase each of the other elements by 1.

It can be proved that the largest element in the sequence becomes N−1 or smaller after a finite number of operations.

You are given the sequence ai. Find the number of times we will perform the above operation.

Constraints

  • 2≤N≤50
  • 0≤ai≤1016+1000

Input

Input is given from Standard Input in the following format:

N
a1 a2 ... aN

Output

Print the number of times the operation will be performed.


Sample Input 1

Copy
4
3 3 3 3

Sample Output 1

Copy
0

Sample Input 2

Copy
3
1 0 3

Sample Output 2

Copy
1

Sample Input 3

Copy
2
2 2

Sample Output 3

Copy
2

Sample Input 4

Copy
7
27 0 0 0 0 0 0

Sample Output 4

Copy
3

Sample Input 5

Copy
10
1000 193 256 777 0 1 1192 1234567891011 48 425

Sample Output 5

Copy
1234567894848
模拟一下就可以了
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <vector>
#include <queue>
#include <cstdlib>
#include <iomanip>
#include <cmath>
#include <ctime>
#include <map>
#include <set>
using namespace std;
#define lowbit(x) (x&(-x))
#define max(x,y) (x>y?x:y)
#define min(x,y) (x<y?x:y)
#define MAX 100000000000000000
#define MOD 1000000007
#define pi acos(-1.0)
#define ei exp(1)
#define PI 3.141592653589793238462
#define ios() ios::sync_with_stdio(false)
#define INF 0x3f3f3f3f3f
#define mem(a) (memset(a,0,sizeof(a)))
typedef long long ll;
ll n,k,x,m;
priority_queue<ll>q;
int main()
{
ios();
scanf("%lld",&n);
for(int i=;i<=n;i++)
{
scanf("%lld",&x);
q.push(x);
}
k=;
while(q.top()+k>=n)
{
ll ans=q.top()+k;
q.pop();
m=ans/n;
ans-=m*n;
k+=m;
q.push(ans-k);
}
printf("%lld\n",k);
return ;
}

最新文章

  1. 我的架构设计~用层关系图说说mvc,mvvm,soa,ddd
  2. 用类方法------&gt;快速创建一个autorelease的对象,在封装的类方法内部
  3. myeclipse编译问题
  4. Mono 异步加载数据更新主线程
  5. 根据中国气象局提供的API接口实现天气查询
  6. IMSDroid遇到注册问题(蘼1S 计3等一下 Android4.4)
  7. Linux块设备驱动(一) _驱动模型
  8. 201521123098 《Java程序设计》第12周学习总结
  9. Windows下caffe的配置和调用caffe库(一)
  10. appium+python搭建自动化测试框架_Appium元素定位(二)
  11. LeetCode算法题-Sum of Square Numbers(Java实现)
  12. 高手速成android开源项目【tool篇】
  13. Android Hook框架adbi源码浅析(一)
  14. Eclipse新建tld文件
  15. MySQL查询练习(45道)
  16. android------adb命令 pull或push手机和电脑文件交互
  17. C/S架构系统自动化测试入门
  18. stenciljs 学习十二 官方doc 路由使用的例子
  19. 【专题】字符串专题小结(AC自动机 + 后缀自动机)
  20. 解决com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes异常

热门文章

  1. easyui combobox keyhandler使用
  2. 什么是 &amp;quot;署名-非商业性使用-同样方式共享&amp;quot;
  3. JVM调优系列:(四)GC垃圾回收
  4. 大型网站架构之JAVA中间件
  5. Android View体系(九)自定义View
  6. 在Ubuntu14.04中配置mysql远程连接教程
  7. Js 中的i++ 和 ++i 的区别
  8. Ajax学习总结(1)——Ajax实例讲解与技术原理
  9. Windows Server 2016 主域控制器搭建
  10. EditPlus,UltraEdit等编辑器列选择的方法