快读快写

1.0:

char c=' ';
ll in(void)
{
ll x=0;bool bl=false;
while(!isdigit(c))
{
bl^=c=='-';
c=getchar();
}
while(isdigit(c))
{
x=(x<<1)+(x<<3)+(c^48);
c=getchar();
}
return bl?-x:x;
}
template<typename t>
void out(t x)
{
if(x<0)pc('-'),x=-x;
if(x>9)out(x/10);
pc(x%10+48);
}

2.0(仅适用于文件读写):

char buf[1 << 23], *p1 = buf, *p2 = buf;
#define getchar() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 23, stdin), p1 == p2) ? EOF : *p1++)