本题第一个测试点在Windows上运行正常,而在Linux(洛谷评测机)上输出始终为0
求助,有哪位大佬能告诉我这是怎么回事?
注:数据的输入是正常的,在Linux下检测也没有出现任何数据输入上的不对
附:我的代码:
#include<cstdio>
#include<cstdlib>
#include<cctype>
#include<algorithm>
using namespace std;
#define ll long long
#define ull unsigned long long
#define rg register
namespace Enterprise{
inline int read(){
int s=0,f=0;
int ch=getchar();
while(!isdigit(ch)) f|=(ch=='-'),ch=getchar();
while(isdigit(ch)) s=(s<<1)+(s<<3)+(ch^48),ch=getchar();
return f?-s:s;
}
const int inf=999999;
const int N=1e7+15;
int w[N],v[N],tot;
int n,t1h,t2h,t1m,t2m,m;
int f[N];
inline void IEE(){
// t1h=read(),t1m=read(),t2h=read(),t2m=read(),n=read();
scanf("%d:%d %d:%d %d",&t1h,&t1m,&t2h,&t2m,&n);
m=t2h*60+t2m-(t1h*60+t1m);
//printf("%d %d %d %d %d %d\n",t1h,t1m,t2h,t2m,n,m);
for(int i=1;i<=n;i++){
int wi,vi,ti,p=1;
scanf("%d %d %d",&wi,&vi,&ti);
//printf("%d %d %d\n",wi,vi,ti);
if(!ti) ti=inf;
while(ti){
w[++tot]=wi*p;
v[tot]=vi*p;
p<<=1;
ti-=p;
if(ti<p){
w[++tot]=ti*wi;
v[tot]=ti*vi;
break;
}
}
}
for(rg int i=1;i<=tot;i++){
for(rg int j=m;j>=w[i];j--){
f[j]=max(f[j],f[j-w[i]]+v[i]);
}
}
printf("%d\n",f[m]);
}
}
signed main(){
Enterprise::IEE();
//system("pause");
return 0;
}