Skip to content

Latest commit

 

History

History
123 lines (104 loc) · 3.36 KB

File metadata and controls

123 lines (104 loc) · 3.36 KB

cptemp

competitive programming template

Build Status


おしながき

マクロ

intlong longです.

ループ系

repマクロあります.
REP(i,l,r)for(int i = l;i < r;i++)と等価です.
rep(i,n)はffor(int i = 0;i < n;i++)と等価です.
reverse方向のfor文が書きたい場合はREPEAT()マクロを使ってください.
REPEAT(i,l,r,cond)マクロはcondfalseの場合に,逆向きにループします.

rep(y,height){
    REPEAT(x,0,width,y%2==0){
        //dosomething
    }
}

のように書くことで「己」のような動き方で二次元空間を移動します.

短縮系

all(e)rall(e)あります.
pb = push_backfs = firstsc = secondあります.

デバッグ系

show(...)関数があります.
標準エラー出力に変数名、値を出します. vectorは直接受け取れます.
showlr(n,l,r)関数はvectorの後半がまだ未使用で0だらけの時などにお使いください.
[l, r)の空間のforループで順番に出力します.

上のどちらも,ジャッジのマシンで出力しないように,-DLOCALオプションをつけてコンパイルしないと動きません.
(AOJのマシンcerrするとREになるので)

出力系

YN(condition)関数はconditiontrueの時に"YES"falseの時に"NO"を出力します.
Yn(condition)"Yes" "No"を出力.
yn(condition)"yes" "no"を出力.
condなんかいらんわ!という時用にYES Yes yes NO No noでそれぞれの文字列を出力します.
case(i)はCase番号の出力が必要な時に適宜どうぞ.


vector<int>viです.
pair<int, int>pintです.


関数

io()関数にio高速化一式,coutの小数値出力桁数変更が入っています.
構造体にio高速化一式を入れたので,呼ばなくても呼ばれるように(は?)なりました.

in(...)関数に変数を渡すと標準入力から値を取ってきます.
可変長引数対応なのでいくつでも渡せます.
vectorも直接渡せます.

A B C

のような時に

int a,b,c;
in(a,b,c);

や,

n
a_1 a_2 ... a_n

のような時に

int n;
in(n);
vi v(n);
in(v);

といった感じです.

out(...)関数で標準出力を行えます.
可変長引数対応で,それぞれの変数間は半角スペースが入ります. vectorの出力フォーマットは{elem, elem, elem}です

int n=3, a=5, b=2;
vi vec={2,4,6};
out(n,a,b);
out(vec);
3 5 2
{2, 4, 6}

のような出力になります.

resz(n, ...)関数で複数のvectorのsizeを同時にresize出来ます.

int n;
vi a, b, c;

in(n);
resz(n, a, b, c);

みたいな利用想定.

resize(v, ...)関数で多次元vectorについて一気にresizeできます.(コンストラクタで頭こわれる人向け)

vector<vector<vi>> dp;
resize(dp, 100, 5, 3);

みたいな利用想定.


定数

デフォルトでは,
INF2^55です.
MOD1e9+7です.
EPS1e-8です.
問題に合わせて適宜変えてください.