参考题解:https://www.luogu.com.cn/article/0d33f86e
我的代码样例一直输出9960,打印了也没问题,求调:
#include <bits/stdc++.h>
using namespace std;
const int N = 5100;
struct node{
int time;
int money;
}task[N];
int n, m, empty[N], ans;
bool cmp(node&a, node&b){
return a.money > b.money;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin >> m >> n;
for(int i = 1; i <= n; i++) cin >> task[i].time;
for(int i = 1; i <= n; i++) cin >> task[i].money;
sort(task + 1, task + 1 + n, cmp);
// cout << '\n';
// for(int i = 1; i <= n; i++){
// cout << task[i].time << ' ' << task[i].money << '\n';
// }
for(int i = 1; i <= n; i++){
for(int j = task[i].time; j >= 1; j--){
if(empty[j] == 0){//如果这个时间没有做任务
empty[j] = 1; //做任务,此时时间用了
task[j].money = 0;//完成的任务罚款就清空
break;
}
}
}
for(int i = 1; i <= n; i++){
ans += task[i].money;//统计罚款
}
ans = m - ans;
cout << ans << '\n';
return 0;
}