重型武器:(调试之后,再换成read(),print()) 大量输入的时候,绝对好用
//直接读取文件,高级版,但是不能直接输入,只能文件来搞
namespace fastIO {
#define BUF_SIZE 100000
//fread -> read
bool IOerror = 0;
inline char nc() {
//FILE* fp=fopen("123.txt","r");
static char buf[BUF_SIZE], *p1 = buf + BUF_SIZE, *pend = buf + BUF_SIZE;
if(p1 == pend) {
p1 = buf;
pend = buf + fread(buf, 1, BUF_SIZE, stdin);//从显示器读入的话,改为stdin,文件的话,改为相应的文件指针fp
if(pend == p1) {
IOerror = 1;
return -1;
}
}
return *p1++;
}
//输入挂,EOF返回0,有输入返回1.
template <class T>
inline bool read(T &ret) {
char c;
if (c=nc(),c==EOF)return 0; //EOF
while(c!='-'&&(c<'0'||c>'9'))c=nc();
int sgn =(c=='-')?-1:1;
ret=(c=='-')?0:(c - '0');
while(c=nc(),c>='0'&&c<='9') ret=ret*10+(c-'0');
ret *= sgn;
return 1;
}
template <class T>
inline void print(T x) {
if(x>9) print(x/10);
putchar(x%10+'0');
}
#undef BUF_SIZE
};
using namespace fastIO;
轻装版:(可以直接调试)
//输入挂
template <class T>
inline bool read(T &ret)
{
char c;
if (c=getchar(),c==EOF)return 0; //EOF
while(c!='-'&&(c<'0'||c>'9'))c=getchar();
int sgn =(c=='-')?-1:1;
ret=(c=='-')?0:(c - '0');
while(c=getchar(),c>='0'&&c<='9') {
ret=ret*10+(c-'0');
}
ret *= sgn;
return 1;
}
template <class T>
inline void print(T x)
{
if(x>9) print(x/10);
putchar(x%10+'0');
}