快速读入

namespace fastIO{
    #define BUF_SIZE 100000
    #define OUT_SIZE 1000000
    bool IOerror=0;
    inline char nc(){
        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);
            if (pend==p1){IOerror=1;return -1;}
        }return *p1++;
    }
    inline bool blank(char ch){return ch==' '||ch=='\n'||ch=='\r'||ch=='\t';}
    inline int read(char *s){
        char ch=nc();
        for(;blank(ch);ch=nc());
        if(IOerror)return 0;
        for(;!blank(ch)&&!IOerror;ch=nc())*s++=ch;
        *s=0;
        return 1;
    }
    inline int read(int &a){
        char ch=nc(); a=0;
        for(;blank(ch);ch=nc());
        if(IOerror)return 0;
        for(;!blank(ch)&&!IOerror;ch=nc())a=a*10+ch-'0';
        return 1;
    }
    struct Ostream_fwrite{
        char *buf,*p1,*pend;
        Ostream_fwrite(){buf=new char[BUF_SIZE];p1=buf;pend=buf+BUF_SIZE;}
        void out(char ch){
            if (p1==pend){
                fwrite(buf,1,BUF_SIZE,stdout);p1=buf;
            }*p1++=ch;
        }
        void flush(){if (p1!=buf){fwrite(buf,1,p1-buf,stdout);p1=buf;}}
        ~Ostream_fwrite(){flush();}
    }Ostream;
    inline void print(char x){Ostream.out(x);}
    inline void println(){Ostream.out('\n');}
    inline void flush(){Ostream.flush();}
    char Out[OUT_SIZE],*o=Out;
    inline void print1(char c){*o++=c;}
    inline void println1(){*o++='\n';}
    inline void flush1(){if (o!=Out){if (*(o-1)=='\n')*--o=0;puts(Out);}}
    struct puts_write{
        ~puts_write(){flush1();}
    }_puts;
};    
using namespace fastIO; 
namespace fastIO {  
    #define BUF_SIZE 100000  
    #define ll long long 
    //fread->read  
    bool IOerror=0;  
    inline char nc(){  
        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);  
            if (pend==p1){IOerror=1;return -1;}   
        }  
        return *p1++;  
    }  
    inline bool blank(char ch){return ch==' '||ch=='\n'||ch=='\r'||ch=='\t';}  
    inline void read(int &x){  
        bool sign=0; char ch=nc(); x=0;  
        for (;blank(ch);ch=nc());  
        if (IOerror)return;  
        if (ch=='-')sign=1,ch=nc();  
        for (;ch>='0'&&ch<='9';ch=nc())x=x*10+ch-'0';  
        if (sign)x=-x;  
    }  
    inline void read(ll &x){  
        bool sign=0; char ch=nc(); x=0;  
        for (;blank(ch);ch=nc());  
        if (IOerror)return;  
        if (ch=='-')sign=1,ch=nc();  
        for (;ch>='0'&&ch<='9';ch=nc())x=x*10+ch-'0';  
        if (sign)x=-x;  
    }  
    inline void read(double &x){  
        bool sign=0; char ch=nc(); x=0;  
        for (;blank(ch);ch=nc());  
        if (IOerror)return;  
        if (ch=='-')sign=1,ch=nc();  
        for (;ch>='0'&&ch<='9';ch=nc())x=x*10+ch-'0';  
        if (ch=='.'){  
            double tmp=1; ch=nc();  
            for (;ch>='0'&&ch<='9';ch=nc())tmp/=10.0,x+=tmp*(ch-'0');  
        }  
        if (sign)x=-x;  
    }  
    inline void read(char *s){  
        char ch=nc();  
        for (;blank(ch);ch=nc());  
        if (IOerror)return;  
        for (;!blank(ch)&&!IOerror;ch=nc())*s++=ch;  
        *s=0;  
    }  
    inline void read(char &c){  
        for (c=nc();blank(c);c=nc());  
        if (IOerror){c=-1;return;}  
    } 
    #undef ll  
    #undef BUF_SIZE  
};  
using namespace fastIO;//使用:read(n),自己测试时要重定向,而不能stdin 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值