CE,如果用cin cout就没问题,用scanf printf就CE,求调。
#include<cstdio>
#include<cmath>
int f[10005],t[10005],c[10005],p[10005],n,s1,s2,e1,e2,ti;
int time(int a1,int a2,int b1,int b2){
if(b2<a2) b2+=60,b1--;
return (b1-a1)*60+(b2-a2);
}
void bag(){
for(int i=1;i<=n;i++){
if(p[i]==0) for(int j=t[i];j<=ti;j++) f[j]=std::max(f[j],f[j-t[i]]+c[i]);
else for(int j=1;j<=p[i];j++) for(int k=ti;k>=t[i];k--) f[k]=std::max(f[k],f[k-t[i]]+c[i]);
}
}
void work(){
scanf("%d:%d%d:%d%d",&s1,&s2,&e1,&e2,&n);
ti=time(s1,s2,e1,e2);
for(int i=1;i<=n;i++) scanf("%d%d%d",&t[i],&c[i],&p[i]);
bag();
printf("%d",f[ti]);
}
int main(){
work();
return 0;
}