Codeforces Round 980 (Div. 2) Problem B
代码
#include<bits/stdc++.h>
using namespace std;
bool cmp(int x,int y)
{
return x<y;
}
int main() {
int t,a;
long long b;
cin>>t;
while(t--){
cin>>a>>b;
vector<int> ans(a);
for(int i=0;i<a;i++){
cin>>ans[i];
}
sort(ans.begin(),ans.end(),cmp);
long long k=0;
long long minx=(long long)ans[0]*(long long)ans.size();
int x=ans[0];
if(b<=minx){
cout<<b<<endl;
continue;
}else {
b-=minx;
k+=(minx+1);
}
for(int i=1;i<a;i++){
if(x==ans[i]){
k+=1;
continue;
}else {
int x2=ans[i]-x;
x=ans[i];
minx=(long long)x2*(long long)(a-i);
if(b>minx){
k+=(minx+1);
b-=minx;
}else {
cout<<(k+b)<<endl;
break;
}
}
}
}
return 0;
}