Official
B - 危険な区域 / Dangerous Areas Editorial by admin
swe-2-high上から順に各行の文字列を読み、X を含む行が初めて現れる番号を求めます。プログラムは答え ans を \(-1\) で初期化し、\(i\) 行目を読むたびに ans == -1 のときだけ s.find('X') != string::npos を調べます。最初に X が見つかった行で ans が確定し、それ以降の行では ans == -1 が偽なので上書きされません。X が一度も現れなければ ans は \(-1\) のまま出力されます。つまり ans は常に「これまでに見つかった最初の危険行」を表し、正しい答えになります。計算量は全文字を読む \(O(HW)\) 時間、各行を逐次処理するので保持領域は \(O(W)\) です。