REP解禁!!

#define REP(i,n) for (int i = 0; i < n; ++i)

ついに使ってしまった。バッドノウハウとか言われてるから使わないでいたけど、TopCoderで見る限り書くのだけでなく読む方もforでかかれてるより読みやすい。
特に数学系の式のケースだともうREPがシグマ記号にしか見えなくなってくる。しかも

for (int i = 0; i < n; ++i)
  for (int j = 0; j < n; ++i)

みたいなくだらないミスで時間を浪費することも無い。

冷静に考えてメリットしか見えてこない。まじなんでこれがバッドノウハウなのか教えてほしい。言語仕様に無い命令勝手に使うなってだけかな?

ついでに

REP(k,n) REP(i,n) REP(j,n) a[i][j] != a[i][k] && a[k][j];

推移的閉方を求めるコードのつもりが・・・。何でこんなものを書いてしまったんだろう。TopCoder付属のエディタだとほんとに|と!の違いが見つけにくい。
しかも最初なんでこのコードがコンパイル通ったのかマジで理解不明だった。あれ??"!"って単項演算子だよな。a[i][j]にどんな値が代入されるんだ???と思って"!="という演算子をググってしまった。しかも「左辺が右辺以外の時、真になります。」と書いてあってますますわからなくなってしまった。
・・・そして冷静になった。あ、別にこれただ比較してるだけで何の影響も無く遅くしてるだけのコードね・・・。|=とはそもそも種類からしてちげぇ・・・。
今度TopCoderで暇なら相手をMissChallengeさせるために入れといてもいいかもしれないw