如果可以进行游戏,那么必定每次游戏都会有一个人当裁判。所以判断是否可以进行游戏的条件就是检查对于n次游戏,是否都有n个人充当裁判。进行二分就十分简单了。
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
__int64 n, a[100100];
bool judge(__int64 x) {
__int64 cnt = 0;
for (__int64 i = 0; i < n; i++) {
//脑残,没注意这个条件,导致一直WA
if (x < a[i]) return false;
cnt += x - a[i];
}
return x <= cnt;
}
int main() {
while (cin>>n) {
for (__int64 i = 0; i < n; i++) cin>>a[i];
__int64 lb = 0, ub = 1e12;
__int64 ans = 0;
while (ub >= lb) {
__int64 mid = (lb + ub)>>1;
if(judge(mid)) {
ans = mid;
ub = mid - 1;
}
else lb = mid + 1;
}
cout<<ans<<endl;
}
return 0;
}