構造体ioss { の#define ENDL '\ n'は 静的 のconst int型 LEN = 20000000 。 チャー OBUF [LEN]、* OH = OBUF。 std :: streambufの *のFB; ioss() { IOS :: sync_with_stdio(偽)。 cin.tie(NULL)。 cout.tie(NULL)。 FB = cout.rdbuf()。 } インラインチャーGC() { 静的 チャー BUF [LEN] * S * T、BUF2 [LEN]。 リターン(S == T)&&(T =(S = BUF)+関数fread(BUF、1、LEN、STDIN))、S == T?- 1:* sの++ ; } インラインioss&オペレータ >>(長い ロング・X) { 静的 チャー CH、SGN、* P。 CH = GC()、SGN = 0 。 以下のための(!; isdigit(CH); CH = GC()) { 場合(CHの== - 1 ) を返す * この; SGN | = CH == ' - ' ; } 用(X = 0 ; isdigit(CH)、CH = GC()) X = X * 10 +(CH ^ ' 0 ' )。 SGN &&(X = - X)。 返す * これを。 } インラインioss&オペレータ >>(INT&X) { 静的 チャー CH、SGN、* P。 CH = GC()、SGN = 0 。 用(!; isdigit(CH)、CH = GC()) { 場合(CH == - 1) を返す * これを。 SGN | = CH == ' - ' ; } のための(X = 0 ; isdigit(CH)、CH = GC()) X = X * 10 +(CH ^ ' 0 ' )。 SGN &&(X = - X)。 返す * これを。 } インラインioss&オペレータ >>(チャー&X) { 静的 チャーCH; にとって(;!はisalpha(CH)、CH = GC()) { 場合(CHの== - 1 ) を返す * この。 } のx =のCH。 返す * これを。 } インラインioss&演算子 >>(ストリング&X) { 静的 チャー CH、* P、BUF2 [LEN]。 用(;!はisalpha(CH)&& isdigit(CH); CH = GC()) であれば(CHの== - 1 ) を返します *この; P = BUF2。 用(;はisalpha(CH)|| isdigit(CH)、CH = GC()) * P = CH、P ++ 。 * P = ' \ 0 ' ; X = BUF2。 返す * これを。 } インラインioss&演算子 <<(ストリング&C) { ための(自動&P:C) この - > 演算子 << (P)。 返す * これを。 } インラインioss&演算子 <<(CONST のchar *のC) { ながら(* C =!' \ 0 ' ) { この - > 演算子 <<(* C)。 C ++ ; } を返す * これを。 } インラインioss&演算子 <<(CONST チャー&C) { OH == OBUF + LEN?(FB-> sputn(OBUF、LEN)、OH = OBUF):0 。 *ああ++ =C; 返す * これを。 } インラインioss&演算子 <<(INT X) { 静的 INT BUF [ 30 ]、CNT。 もし(x < 0 ) この - > 演算子 <<(' - ')、X = - X。 もし(Xの== 0 ) この - > 演算子 <<(' 0 ' )。 用(CNT = 0; バツ; X / = 10 ) BUF [ ++ CNTは]のx%= 10 | 48 ; 一方、(CNT) この - > 演算子 <<((CHAR)cnt-- BUF ])。 返す * これを。 } インラインioss&演算子 <<(長い 長いX) { 静的 INT BUF [ 30 ]、CNT。 もし(x < 0 ) この - > 演算子 <<('- ')、X = - X。 もし(Xの== 0 ) この - > 演算子 <<(' 0 ' )。 ため(CNT = 0 ; X、X / = 10 ) BUF [ ++ CNTは]のx%= 10 | 48 ; 一方、(CNT) この - > 演算子 <<((CHAR)cnt-- BUF ])。 返す * これを。 } 〜ioss() { FB- > sputn(OBUF、OH -OBUF); } } I。
用途:IO >> X >> Y;へ