namespace IO{
const int MAX = 1 << 20;
char buf[MAX], *p1, *p2;
#define gc() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, MAX, stdin), p1 == p2) ? EOF : *p1 ++ )
int read(){
int x = 0, f = 0;
char c = gc();
while(!isdigit(c)){
if(c == '-') f = -1;
c = gc();
}
while(isdigit(c)) x = (x << 3) + (x << 1) + (c ^ 48), c = gc();
return f ? -x : x;
}
char pbuf[MAX], *pp = pbuf;
void push(const char &c){
if(pp - pbuf == MAX) fwrite(pbuf, 1, MAX, stdout), pp = pbuf;
*pp ++ = c;
}
void write(int x){
static int sta[35];
int top = 0;
do{
sta[top ++ ] = x % 10;
}while(x /= 10);
while(top) push(sta[ -- top] + '0');
}
void flush(){
fwrite(pbuf, 1, pp - pbuf, stdout);
}
} // namespace IO
用法:
读入单个数:int n = IO::read();
读入数组:for(int i = 0; i < n; ++ i) a[i] = IO::read();
(两者一般搭配一起使用)
输出单个数:
IO::write(res);
IO::flush();
输出数组结果:
for(int i = 0; i < n; ++ i){
IO::write(a[i]); // 输出当前元素
IO::push(' '); // 数组元素之间添加空格,如果不需要可以省略
}
IO::flush();
换行:
IO::push('\n'); // 在输出内容后添加换行符
IO::flush();
合并:
IO::write(res);
IO::push('\n');
for(int i = 0; i < n; ++ i){
IO::write(a[i]);
IO::push(' ');
}
IO::flush();