• 模板 读入挂


    ## fread读入挂

    const int BUF=40000000;
    char Buf[BUF],*buf=Buf;
    const int OUT=20000000;
    char Out[OUT],*ou=Out;int Outn[30],Outcnt;
    inline void write(int x){
    if(!x)*ou++=48;
    else{
    for(Outcnt=0;x;x/=10)Outn[++Outcnt]=x%10+48;
    while(Outcnt)*ou++=Outn[Outcnt--];
    }
    }
    inline void writell(ll x){
    if(!x)*ou++=48;
    else{
    for(Outcnt=0;x;x/=10)Outn[++Outcnt]=x%10+48;
    while(Outcnt)*ou++=Outn[Outcnt--];
    }
    }
    inline void writechar(char x){*ou++=x;}
    inline void writeln(){*ou++=' ';}
    inline void read(int&a){for(a=0;*buf<48;buf++);while(*buf>47)a=a*10+*buf++-48;}

    ## 一般读入挂

    inline ll read()
    {
    int x=0,f=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
    return x*f;
    }

    ## 超神读入挂:

    namespace fastIO{
    #define BUF_SIZE 100000
    #define OUT_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;}
    //{printf("IO error! ");system("pause");for (;;);exit(0);}
    }
    return *p1++;
    }
    inline bool blank(char ch){return ch==' '||ch==' '||ch==' '||ch==' ';}
    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;}
    }
    //getchar->read
    inline void read1(int &x){
    char ch;int bo=0;x=0;
    for (ch=getchar();ch<'0'||ch>'9';ch=getchar())if (ch=='-')bo=1;
    for (;ch>='0'&&ch<='9';x=x*10+ch-'0',ch=getchar());
    if (bo)x=-x;
    }
    inline void read1(ll &x){
    char ch;int bo=0;x=0;
    for (ch=getchar();ch<'0'||ch>'9';ch=getchar())if (ch=='-')bo=1;
    for (;ch>='0'&&ch<='9';x=x*10+ch-'0',ch=getchar());
    if (bo)x=-x;
    }
    inline void read1(double &x){
    char ch;int bo=0;x=0;
    for (ch=getchar();ch<'0'||ch>'9';ch=getchar())if (ch=='-')bo=1;
    for (;ch>='0'&&ch<='9';x=x*10+ch-'0',ch=getchar());
    if (ch=='.'){
    double tmp=1;
    for (ch=getchar();ch>='0'&&ch<='9';tmp/=10.0,x+=tmp*(ch-'0'),ch=getchar());
    }
    if (bo)x=-x;
    }
    inline void read1(char *s){
    char ch=getchar();
    for (;blank(ch);ch=getchar());
    for (;!blank(ch);ch=getchar())*s++=ch;
    *s=0;
    }
    inline void read1(char &c){for (c=getchar();blank(c);c=getchar());}
    //scanf->read
    inline void read2(int &x){scanf("%d",&x);}
    inline void read2(ll &x){
    #ifdef _WIN32
    scanf("%I64d",&x);
    #else
    #ifdef __linux
    scanf("%lld",&x);
    #else
    puts("error:can't recognize the system!");
    #endif
    #endif
    }
    inline void read2(double &x){scanf("%lf",&x);}
    inline void read2(char *s){scanf("%s",s);}
    inline void read2(char &c){scanf(" %c",&c);}
    inline void readln2(char *s){gets(s);}
    //fwrite->write
    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 print(int x){
    static char s[15],*s1;s1=s;
    if (!x)*s1++='0';if (x<0)out('-'),x=-x;
    while(x)*s1++=x%10+'0',x/=10;
    while(s1--!=s)out(*s1);
    }
    void println(int x){
    static char s[15],*s1;s1=s;
    if (!x)*s1++='0';if (x<0)out('-'),x=-x;
    while(x)*s1++=x%10+'0',x/=10;
    while(s1--!=s)out(*s1); out(' ');
    }
    void print(ll x){
    static char s[25],*s1;s1=s;
    if (!x)*s1++='0';if (x<0)out('-'),x=-x;
    while(x)*s1++=x%10+'0',x/=10;
    while(s1--!=s)out(*s1);
    }
    void println(ll x){
    static char s[25],*s1;s1=s;
    if (!x)*s1++='0';if (x<0)out('-'),x=-x;
    while(x)*s1++=x%10+'0',x/=10;
    while(s1--!=s)out(*s1); out(' ');
    }
    void print(double x,int y){
    static ll mul[]={1,10,100,1000,10000,100000,1000000,10000000,100000000,
    1000000000,10000000000LL,100000000000LL,1000000000000LL,10000000000000LL,
    100000000000000LL,1000000000000000LL,10000000000000000LL,100000000000000000LL};
    if (x<-1e-12)out('-'),x=-x;x*=mul[y];
    ll x1=(ll)floor(x); if (x-floor(x)>=0.5)++x1;
    ll x2=x1/mul[y],x3=x1-x2*mul[y]; print(x2);
    if (y>0){out('.'); for (size_t i=1;i<y&&x3*mul[i]<mul[y];out('0'),++i); print(x3);}
    }
    void println(double x,int y){print(x,y);out(' ');}
    void print(char *s){while (*s)out(*s++);}
    void println(char *s){while (*s)out(*s++);out(' ');}
    void flush(){if (p1!=buf){fwrite(buf,1,p1-buf,stdout);p1=buf;}}
    ~Ostream_fwrite(){flush();}
    }Ostream;
    inline void print(int x){Ostream.print(x);}
    inline void println(int x){Ostream.println(x);}
    inline void print(char x){Ostream.out(x);}
    inline void println(char x){Ostream.out(x);Ostream.out(' ');}
    inline void print(ll x){Ostream.print(x);}
    inline void println(ll x){Ostream.println(x);}
    inline void print(double x,int y){Ostream.print(x,y);}
    inline void println(double x,int y){Ostream.println(x,y);}
    inline void print(char *s){Ostream.print(s);}
    inline void println(char *s){Ostream.println(s);}
    inline void println(){Ostream.out(' ');}
    inline void flush(){Ostream.flush();}
    //puts->write
    char Out[OUT_SIZE],*o=Out;
    inline void print1(int x){
    static char buf[15];
    char *p1=buf;if (!x)*p1++='0';if (x<0)*o++='-',x=-x;
    while(x)*p1++=x%10+'0',x/=10;
    while(p1--!=buf)*o++=*p1;
    }
    inline void println1(int x){print1(x);*o++=' ';}
    inline void print1(ll x){
    static char buf[25];
    char *p1=buf;if (!x)*p1++='0';if (x<0)*o++='-',x=-x;
    while(x)*p1++=x%10+'0',x/=10;
    while(p1--!=buf)*o++=*p1;
    }
    inline void println1(ll x){print1(x);*o++=' ';}
    inline void print1(char c){*o++=c;}
    inline void println1(char c){*o++=c;*o++=' ';}
    inline void print1(char *s){while (*s)*o++=*s++;}
    inline void println1(char *s){print1(s);*o++=' ';}
    inline void println1(){*o++=' ';}
    inline void flush1(){if (o!=Out){if (*(o-1)==' ')*--o=0;puts(Out);}}
    struct puts_write{
    ~puts_write(){flush1();}
    }_puts;
    inline void print2(int x){printf("%d",x);}
    inline void println2(int x){printf("%d ",x);}
    inline void print2(char x){printf("%c",x);}
    inline void println2(char x){printf("%c ",x);}
    inline void print2(ll x){
    #ifdef _WIN32
    printf("%I64d",x);
    #else
    #ifdef __linux
    printf("%lld",x);
    #else
    puts("error:can't recognize the system!");
    #endif
    #endif
    }
    inline void println2(ll x){print2(x);printf(" ");}
    inline void println2(){printf(" ");}
    #undef ll
    #undef OUT_SIZE
    #undef BUF_SIZE
    };
    using namespace fastIO;

  • 相关阅读:
    C++primer plus第六版课后编程题答案7.2
    sprintf函数
    sscanf函数
    [转]Visual Studio 2012 编译错误【error C4996: 'scanf': This function or variable may be unsafe. 】的解决方案
    C/C++动态二维数组的内存分配和释放
    malloc动态分配多维数组
    区间重合判断[poj2808 校门外的树]
    C++中的sort函数
    C语言qsort
    [转]Linux统计代码行数
  • 原文地址:https://www.cnblogs.com/qscqesze/p/4907533.html
Copyright © 2020-2023  润新知