题目描述
给定一个长度为 n 的数列 a,和一个整数 k。每次操作,你可以在两种操作中选一种:
输入格式
第一行一个整数 T,表示数据组数。
每组数据第一行两个整数 n 和 k,第二行 n 个整数 a1 到 an。
输出格式
每组数据输出一行,代表答案。
样例输入
4
1 10
20
2 69
6 9
7 8
1 2 1 3 1 2 1
10 1
1 2 3 1 2 6 1 6 8 10
样例输出
10
0
2
7
数据规模
1≤T≤104,1≤n≤2×105,1≤k≤1015
全部 TLE!
#include <bits/stdc++.h>
using namespace std;
long long T, n, k, sum, a[200005], x;
int main() {
cin>>T;
for(int i=1; i<=T; i++) {
cin>>n>>k;
sum=0;
x=0;
for(int i=0; i<n; i++) {
cin>>a[i];
sum+=a[i];
}
sort(a, a+n);
if(n==1) cout<<a[0]-k<<endl;
while(sum>k) {
if(a[n]!=a[i]) {
a[n]=a[i];
} else {
a[n]--;
}
sort(a, a+n);
x++;
}
cout<<x;
}
return 0;
}