代码如下
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
struct ch{
int p,num,d;//price number date
}c[100005];
int n,x;
int ans;
bool cmp(ch x,ch y){
if(x.p!=y.p) return x.p<y.p;
else return x.d<y.d;
}
int main(){
cin>>x>>n;
for(int i=1;i<=n;i++){
cin>>c[i].p>>c[i].d>>c[i].num;
}
sort(c+1,c+n+1,cmp);
int fm=1;//min-flag
for(int i=1;i<=x;i++){
if(i<=c[fm].d&&c[fm].num>0) {
ans+=c[fm].p;
c[fm].num--;
}
else{
fm++;
i--;
}
if(fm>x){
cout<<-1;
return 0;
}
}
cout<<ans;
return 0;
}
我觉得贪心的策略没啥问题的awa,哪里挂了,求助大佬(跪求)