求助为什么用了快读快输会又TLE又RE?这是我的AC代码:
#include<bits/stdc++.h>
using namespace std;
int n,f[1005];
string str;
int lat,t,y,ans=1e9,be,en,anst;
signed main(){
cin>>n;
for(int i=2;i<=n;i++){
cin>>str;
if(str=="Patrik") cin>>t,f[i]=t;
else cin>>y>>t,f[i]=f[y]+t;
}
for(int i=2;i<=n;i++)
if(ans>f[i]-f[i-1]) ans=f[i]-f[i-1],be=i-1,en=i;
cout<<ans<<' '<<be<<' '<<en;
return 0;
}
错误的代码:
#include<bits/stdc++.h>
using namespace std;
namespace IO{
char ibuf[(1<<20)+1],*iS,*iT;
#if ONLINE_JUDGE
#define gh() (iS==iT?iT=(iS=ibuf)+fread(ibuf,1,(1<<20)+1,stdin),(iS==iT?EOF:*iS++):*iS++)
#else
#define gh() getchar()
#endif
#define reg register
inline long long read(){
reg char ch=gh();
reg long long x=0;
reg char t=0;
while(ch<'0'||ch>'9') t|=ch=='-',ch=gh();
while(ch>='0'&&ch<='9') x=x*10+(ch^48),ch=gh();
return t?-x:x;
}
}
using IO::read;
void write(long long x) {
if(x<0){
putchar('-');
write(-x);
return;
}
if(x>=10)write(x/10);
putchar(x%10+'0');
}
int n,f[1005];
string str;
int t,y,ans=1e9,be,en;
signed main(){
n=read();
for(int i=2;i<=n;i++){
cin>>str;
if(str=="Patrik") t=read(),f[i]=t;
else y=read(),t=read(),f[i]=f[y]+t;
}
for(int i=2;i<=n;i++)
if(ans>f[i]-f[i-1]) ans=f[i]-f[i-1],be=i-1,en=i;
write(ans);
putchar(' ');
write(be);
putchar(' ');
write(en);
return 0;
}