CodeForces - 574A
直接暴力,因为要贿赂使自己的票数最高,让比自己票数高的都小于自己,所以可以每次只贿赂票数最高的人,这样就可以以最小的次数让自己的票数最高,这一过程可以通过一优先队列来实现(每次取队首–,自己++,然后将队首加入队列)重复以上过程直到队首小于自己的票数。
#include<iostream>
#include<vector>
#include<cstdio>
#include<cstring>
#include<queue>
#define inf 1<<29
#define maxn 5000
using namespace std;
struct h{
int l;
int r;
};
int n,m;
h a[maxn];
int d[maxn];
bool mp[maxn][maxn];
int main(){
priority_queue<int>a;
int n;
cin>>n;
int d;
cin>>d;
for(int i=1;i<n;i++){
int x;
cin>>x;
a.push(x);
}
int ans=0;
while(a.top()>=d){
ans++;
int p=a.top();
a.pop();
p--;
d++;
a.push(p);
}
cout<<ans<<endl;
return 0;
}