AT_ndpc2026_h コイン拾い
Description
縦横 $ N $ マスのグリッドがあります。グリッドの上から $ i $ 行目、左から $ j $ 列目のマスを $ (i,j) $ と呼びます。
グリッドの各マスの状態は $ N $ 個の長さ $ N $ の文字列 $ S_1,S_2,\dots,S_N $ によって表されます。 $ S_i $ の $ j $ 文字目が `@` である時は $ (i,j) $ はコインが $ 1 $ 枚落ちているマス、`.` である時は何もないマスです。
あなたはグリッドの $ (1,1) $ にいます。 $ (1,1) $ は何もないマスであることが保証されています。
あなたは以下の行動を $ 0 $ 回以上自由な回数行うことができます。
- 今自分がいるマスを $ (i,j) $ とする。右のマスまたは下のマス、すなわち $ (i,j+1) $ または $ (i+1,j) $ に移動する。グリッドの外への移動はできない。移動した先のマスにコインが落ちていた場合、あなたはそれを必ず拾う。
$ x = 0, 1, \dots, 2N-2 $ について次の問題を解いてください。
- あなたは $ 0 $ 回以上行動してあるマス $ (i,j) $ にたどり着きました。この時、あなたはコインを $ x $ 枚持っていました。 $ (i,j) $ としてあり得るマスは何マスありますか?
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ S_1 $ $ S_2 $ $ \vdots $ $ S_N $
Output Format
$ 2N-1 $ 行出力せよ。 $ i $ 行目には $ x=i-1 $ の時の答えを出力せよ。
Explanation/Hint
### 部分点
この問題には部分点が設定されている。
- $ N \leq 1500 $ であるデータセットに正解した場合、 $ 2 $ 点が与えられる。
### Sample Explanation 1
例えば $ x=0 $ のとき、 $ (i,j) $ としてあり得るのは $ (1,1),(2,1),(2,2),(3,2),(3,3) $ の $ 5 $ 個です。
### Constraints
- $ 2 \leq N \leq 4000 $
- $ S_1, S_2, \dots, S_N $ は `@` と `.` からなる長さ $ N $ の文字列
- $ S_1 $ の $ 1 $ 文字目は `.`
- $ N $ は整数