快速读入能使我们的程序常数减小,这里介绍一种较为快速的方法。
#define gc pa==pb&&(pb=(pa=buf)+fread(buf,1,100000,stdin),pa==pb)?EOF:*pa++ #define gc pa==pb&&(pb=(pa=buf)+fread(buf,1,100000,in),pa==pb)?EOF:*pa++
我们用这个gc来代替我们快读的getchar,速度大概是getchar的7倍。此处stdin,和in是文件指针,当我们使用freopen时我们使用第一行,当我们使用fopen的时候我们需要文件重定向再使用第二行的gc即可。加上快读速度极快。
inline int read() { register int p(1),a(0);register char ch(gc); while((ch<'0'||ch>'9')&&ch!='-') ch=gc; ch=='-'?p=-1,ch=gc:p; while(ch>='0'&&ch<='9') a=a*10+ch-48,ch=gc; return a*p; }