Skip to content

Shinjirow/CompetitiveProgrammingTemplate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 

Repository files navigation

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です.
問題に合わせて適宜変えてください.

About

competitive programming template

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages