题解
2025-09-27 11:39:30
发布于:广东
9阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
const int mx = 1e3 + 9;
int n, h, k, f[mx * mx];
long long ans;
struct node{
int m, l, cnt;
} level[mx];
bool cmp(node x,node y){
return x.m < y.m;
}
bool cmp2(int x,int y){
return x > y;
}
int main(){
cin >> n >> h >> k;
for(int i = 1;i <= h;i++){
cin >> level[i].m;
level[i].l = h - i + 1;
}
for(int i = 1;i <= n;i++){
cin >> f[i];
}
sort(level + 1,level + h + 1,cmp);
sort(f + 1,f + n + 1,cmp2);
for(int i = 1;i <= n;i++){
for(int j = 1;j <= h;j++){
if(level[j].l >= f[i] && level[j].cnt < k){
ans += level[j].m;
level[j].cnt++;
break;
}
}
}
cout << ans;
return 0;
}
这里空空如也
有帮助,赞一个