只用看为什么出错就行QAQ
#include <iostream>
#include <algorithm>
using namespace std;
int a[5005];
long long sum;
int wei(int x){
int ans;
if (x == 0) return 1;
while(x){
x /= 10;
ans++;
}
return ans;
}
bool cmp(int a, int b){
return a > b;
}
int main(){
int n,m,k,r2;
cin >> n >> m >> k;
r2 = n;
for (int i = 1; i <= n; i++)
cin >> a[i];
sort(a+1,a+1+n,cmp);
while(k--){
int sheng = m;
int l = 1, r = r2;
while(sheng){
int ansi = 0;
l = 1;r = r2;
while(l <= r){
int mid = (l+r)>>1;
if (wei(a[mid]) <= sheng){
ansi = mid;
r = mid - 1;
}else {
l = mid + 1;
}
// cout << l << " " << r <<" " <<a[mid]<< "\n";
}
//cout << ansi << " " << a[ansi] << "\n\n";
sheng -= wei(a[ansi]);
sum += a[ansi];
a[ansi] = 0;
sort(a+1,a+1+r2,cmp);
r2--;
for (int i = 1; i <= r2; i++);
}
}
cout << sum;
}
输入
5 2 1
1 2 3 4 5