凡ミス集

ABC 062 D問題

不完全な修正

1 累積和を計算するから

a += x;

と書く。

2 累積和を配列に格納する必要があったため、a[i+1] をa[i] から決定できるように書き換える。その際+= をそのまま残してエンバグする。

a[i+1] += a[i] + x;

もちろん正しくは

a[i+1] = a[i] + x;

バグのある方

abc062.contest.atcoder.jp

修正した方

abc062.contest.atcoder.jp

ARC 084 D問題

値渡し

二分探索にベクターを値渡ししてしまいTLE

値渡しでTLE した方

https://beta.atcoder.jp/contests/arc084/submissions/1745225beta.atcoder.jp

参照渡ししてAC した方

https://beta.atcoder.jp/contests/arc084/submissions/1745350beta.atcoder.jp

ABC 076 D問題

ループ作って値を入れず

ループで配列を走査して最小値を探索したのに、その最小値を変数に代入していなかった(インデックスを格納しただけで気を抜いてしまった)。

バグのある方

abc076.contest.atcoder.jp

修正した方

abc076.contest.atcoder.jp

以上、10月後半から11月前半の凡ミス集でした。

Code Festival qual C D問題

大きなデータはグローバルに

int main(){
    int a[(1<<26)];
}

はSegmentation fault になりますが、

int a[(1<<26)];
int main(){
}

は通ります。ツイッターでは「グローバル変数のスタック」という間違った用語を使ってしまったのですが、一般にグローバル変数が置かれるところは静的領域というんだそうです。 具体的なサイズは処理系に依存するんで調べてません。

Submission #1724434 - CODE FESTIVAL 2017 qual C | AtCoder