#define long long long

akouryy's programming blog

自分用競プロコーディング規約

未完成です。

言語

原則 C++ を使用する。C++ を使用するとき、そのバージョンは C++11 以上とする。

命名規則

入力変数

問題文中に名前の与えられている変数は、その先頭文字を大文字に、先頭以外の文字を小文字に(capitalize)した名前を用いる。

その他の変数

全て小文字で表す。

下の表に示すものに関しては、定められた名称を使用する。略称が定められている場合それを用いる。但し、略称がほかの変数と重複する場合はこの限りではない。

名称表

内容 名称 略称
答え ans
価格、距離、時間 cost c(単数)
個数 count c(単数)
動的計画法 dp
四方、八方を表す配列 dx, dy
後処理で累積和をとる配列 imos
添字 index i, j, k(単数)
長さ length(, size) l(, s)
最大値 max(複合語) ma(稀), m
最小値 min(複合語) mi(稀), m
剰余数 mod
サイズ size s
累積和の配列 sum s

基本的に一単語だが、複数の単語を用いる場合は単語間を下線(_)で区切る。略称の場合、下線なしで略称をつなげることもできる。

定数

全て小文字で表す。複数の単語を用いる場合は単語間を下線(_)で区切る。

変数#名称表 に示すものについては、その略称でない名称を全て大文字にしたものを用いる。

関数

コーディングスタイル

演算子の優先順位は、その一般的な認知度に係わらずこれを前提としてよい。

空白

空白4文字のインデントを基本とする。式の途中で改行する場合に関してはこれに限らない。

1行の文字数は150文字以内を目安とする。

行末の空白は認めない。ファイル末尾の改行は必須である。

二項演算子の前後に1字の空白を設ける。但し、+1-1&1には空白を用いなくてもよい。また、.の周囲および,の直前の空白は認められない。

単項演算子の後や括弧の内部に空白を入れてはならない。

関数や制御構造の本体にブロックを使う場合、ブロックの最初の波括弧({)は直前の非空白文字と同じ行に、一つの空白を挟んで配置する。

bool型の値を用いるときは、01ではなくfalsetrueを使う。

整数型は、原則的にlong longを使用する。必要に応じて#defineマクロを用いintキーワードを書き換える。

ライブラリ

標準ライブラリは、bits/stdc++.hが存在する環境ならばこれを利用し一括で読み込む。std名前空間は、using namespaceすることで全て無修飾で参照する。

iostreamを使う場合、cin.tie(0); ios::sync_with_stdio = 0;を記述する。なお、それぞれの0NULLfalseと書くことも許容される。

符号なし整数型の値を返すsize()メンバ関数を用いてはならない。必ず、符号付き整数型を返す関数またはマクロを独自に定義し間接的に利用する。