检查了无数次,依然CE,求助!
#include<bits/stdc++.h>
using namespace std;
int st,ar,en,d,n,s,index,ans;
int f[1000005];
struct node{
int t,c,p;
}a[10005];
void calctime(){
s=(en-st)*60+(d-ar);
}
int main(){
scanf("%d:%d%d:%d%d",&st,&ar,&en,&d,&n);
calctime();
index=n;
for(int i=1;i<=n;i++){
int c=1;
scanf("%d%d%d",&a[i].t,&a[i].c,&a[i].p);
if(!a[i].p)a[i].p=1e6;
while(a[i].p>c){
a[i].p-=c;
a[++index].t=a[i].t*c;
a[index].c=a[i].c*c;
c*=2;
}
a[i].t*=a[i].p;
a[i].c*=a[i].p;
}
for(int i=1;i<=index;i++){
for(int j=s;j>=a[i].t;j--)
f[j]=max(f[j],f[j-a[i].t]+a[i].c);
}
for(int i=1;i<=s;i++)
if(ans<f[i])ans=f[i];
printf("%d\n",ans);
return 0;
}