ICPC 開始直後の準備
私の一存で厳選した設定なので適宜変更すること.
~/.emacs.d/init.el
に次のように書く.~/.emacs
,~/.emacs.d/emacs.el
があったら消す.
(global-set-key "\C-z" 'undo) ;; Undo
(global-set-key "\C-s" 'isearch-forward) ;; 検索
(global-set-key "\C-r" 'query-replace) ;; 置換
(global-set-key "\C-j" 'dabbrev-expand) ;; 補完
(global-set-key "\C-h" 'keyboard-quit) ;; 頻発するヘルプの誤爆を殺す
(setq inhibit-startup-message t) ;; うざいメッセージを殺す
(show-paren-mode t) ;; 対応する括弧の表示
(add-hook 'c++-mode-hook 'flymake-mode) ;; 逐次文法チェック(ICPCでEmacsを選ぶ理由)
;; 4スペースインデント
(setq-default
c-basic-offset 4
tab-width 4
indent-tabs-mode nil)
~/.bashrc
の末尾に次を追記.
bind 'set completion-ignore-case on' # 大文字小文字を無視してtab補完
ulimit -s 1048576 # スタックメモリ1GBでオーバーフロー防止
alias g="g++ -std=gnu++11 -Wall -Wextra -g" # 積極的に警告
alias a="./a.out"
alias l="ls"
alias k="ls"
作業ディレクトリに flamake-mode 用の Makefile
を置く.インデントは必ずタブにする.
check-syntax:
g++ -Wall -Wextra -Wshadow -fsyntax-only -std=gnu++11 $(CHK_SOURCES)
作業ディレクトリに template.cc
を置いてコピー.#define int ll するときは ll の定義直後に書く.
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define rep(i, n) for (int i = 0; i < (int)(n); ++i)
#define all(c) begin(c), end(c)
#define dump(x) cerr << __LINE__ << ":\t" #x " = " << (x) << endl
cat template.cc > {A,B,C,D,E,F,G,H,I,J,K,L,M}.cc