关于快读
查看原帖
关于快读
824865
lraM41楼主2023/10/10 10:44

求助为什么用了快读快输会又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;
}
2023/10/10 10:44
加载中...