Codeforces Round #569 (Div. 2)
Codeforce Round #569 (Div. 2) に出場、またレーティングを大幅に減らす大事故が発生 (1784 → 1721)。もう免許を返上すべきか…。
自分でもよくわからない思い込みがあって問題 B を落としたのがショックが大きい。 数学の素養がまるでない、というか基礎のレベルであやしいと思う。
だいぶ時間を浪費した後に諦めて問題 C D をやり C だけ正答。 D は、あと 5 分あったら出せてたなあ。 B でつまづいてなければ ABCD 出せてたと思うと悲しいです。
寝て起きたあとに提出してみた問題 D で面白かったのは
初めて出力バッファリングの問題で TLE が出たこと (#55910106)。
test 6 は n=941, m=748 なので 70 万行程度の出力は 1 秒では出せないらしい。
改行を endl
でなく '\n'
に変えたら通った (#55910143)。
というか、これが pretest でなかったとしたらやっぱり問題 D はとれてなかったな。
入力のバッファリングで TLE するのはいままで何度も痛い目にあってきたので、
どの問題でも cin
には対策を必ず入れるようにしていましたが、
出力でもなんかやらないとだめか。
個人的には改行を '\n'
と書きたくないが #define endl '\n'
するのもいやなので、
面倒だけど anonymous namespace で自分用 endl
を定義するのがいいかなあと思いました。
ということで今後の C++ のテンプレはこんな感じかな。
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
using namespace std;
namespace {
inline ostream &endl(ostream &os) {
os.put('\n');
return os;
}
}
int main(int argc, char **argv)
{
ios_base::sync_with_stdio(false);
cin.tie(0);
// ...
return 0;
}