A - Participants

実行時間制限: 2 sec / メモリ制限: 1024 MiB

配点 : 100

問題文

パ研合宿20XXは 2 日間に分けて宿泊なしで開催され、1 日目の参加者は A 人、2 日目の参加者は B 人でした。

合宿全体での参加者、即ち 2 日間のうち 1 日以上に参加した人の数は最少で何人、最多で何人でしょうか?


制約

  • 1\leq A,\ B\leq100
  • 入力は全て整数

小課題

この問題に小課題は存在しません。全てのケースに正解すると 100 点が与えられます。

入力

入力は以下の形式で標準入力から与えられます。

\(A\) \(B\)

出力

参加者の人数の最小値、最大値をこの順で空白区切りで出力してください。出力の最後の改行を忘れないでください。

入力例1

4 3

出力例1

4 7

参加者の人数は 1 日目の参加者が両日に参加した場合に最小値を取り、1 日目と 2 日目の参加者が全て異なる場合に最大値を取ります。

入力例2

5 5

出力例2

5 10

入力例3

98 99

出力例3

99 197

Writer : penguinman

B - Walking

実行時間制限: 2 sec / メモリ制限: 1024 MiB

配点 : 300

問題文

パ研町は,南北に H+1 ブロック,東西に W+1 ブロックのグリッド状になっている. 北から i 行目,西から j 列目のブロックを(i,j) で表す.
(1,1) に住んでいる Miyuki 君は,ある日散歩をしようと思い立った. 彼は (i,j) (1 \leq i \leq H,1 \leq j \leq W)E または S の文字 C_{ij} を書き, (1,1) から開始して次のようなルールに従って散歩を行うことにした.

現在 (x,y) にいる時,

  • x \leq H かつ y \leq W の場合,C_{xy} = E なら東に進み,C_{xy}= S なら南に進む.
  • x = H+1 または y=W+1 の場合,散歩を終了する.

この計画を知った (H,W+1) に住む Kaguya さんは,彼に散歩が終わったついでで訪問して欲しいと考え,ブロックに書かれた文字をいくつか書き換える事にした. 具体的には,E と書かれていた場合は S に,S と書かれていた場合は E に書き換える.

Miyuki 君の散歩が (H,W+1) で終了するようにするためには,最少でいくつの文字を書き換える必要があるか?

制約

  • 入力は全て整数である.
  • 1 \leq H,W \leq 2000
  • C_{ij}E または S

小課題

  1. (5 点) H=1,W=1
  2. (15 点) H=1
  3. (80 点) H=2
  4. (200 点) 追加の制約はない.

入力

入力は以下の形式で標準入力から与えられる。

H \ \ W
C_{11} \ldots C_{1W}
\vdots
C_{H1} \ldots C_{HW}

出力

標準出力に答えを出力せよ.


入力例 1

1 1
S

出力例 1

1

このままだと散歩は (2,1) で終わってしまうため,(1,1) に書かれた文字を E にする.
この入力は小課題 1, 2 の制約を満たす.

入力例 2

1 2
ES

出力例 2

1

(1,2) に書かれた文字を E にする事で達成できる.
この入力は小課題 2 の制約を満たす.

入力例 3

2 3
EEE
SSS

出力例 3

2

(1,3) , (2,3) に書かれた文字をそれぞれ書き換える事で達成できる.
この入力は小課題 3 の制約を満たす.

入力例 4

10 10
SEESESESES
EEESESEEES
EESESEESES
EESSSSESES
SEESSEEEEE
EESESEEESS
EEEESSEEEE
SESESESSES
SEESSEESSE
EESSSSSESS

出力例 4

3

この入力は小課題 4 の制約を満たす.

Writer : define

C - A + B

実行時間制限: 2 sec / メモリ制限: 1024 MiB

配点 : 400

問題文

define君は N 頂点 M 辺の単純とも連結とも限らない有向グラフを持っており, 頂点には 1, 2, \cdots N の番号が,辺には 1, 2, \cdots M の番号がついている.
有向辺 i は 頂点 A_i から 頂点 B_i へと張られている.

彼は以下の操作を任意の回数行える.

  1. 頂点 A (1 \leq A \leq N) から頂点 B (1 \leq B \leq N, A \neq B) を結ぶ辺と, 頂点 B から頂点 C (1 \leq C \leq N, B \neq C) を結ぶ辺をそれぞれ 1 本選ぶ.
  2. 選んだ 2 本の辺を消し,A \neq C の場合は新たに頂点 A から 頂点 C に有向辺を 1 本張る.
適切に操作をした時,最終的に残る辺の本数は最少で何本になるか? T 件のテストケースそれぞれについて求めよ.

制約

  • 入力は全て整数である.
  • 1 \leq T \leq 100
  • 2 \leq N \leq 10^6
  • 1 \leq M \leq 10^6
  • 1 \leq A_i,B_i \leq N
  • A_i \neq B_i
  • T 件のテストケースに含まれる N,M の総和はそれぞれ 10^6 以下
与えられる有向グラフは多重辺を含む場合がある事に注意せよ.

小課題

  1. (25 点) N=2
  2. (25 点) M \leq 2
  3. (25 点) M = N, A_i = i , 各 i (1 \leq i \leq N) について B_j = i を満たす j1
  4. (25 点) M = N-1, A_i = i+1,B_i < A_i
  5. (100 点) M = N, A_i = i
  6. (200 点) 追加の制約はない.

入力

入力は以下の形式で標準入力から与えられる。

各入力データについて,以下の形式で入力が与えられる.

T
(1\ 件目のテストケースの情報)
(2\ 件目のテストケースの情報)
\vdots
(T\ 件目のテストケースの情報)

各テストケースについて,以下の形式で入力が与えられる.

N \ \ M
A_1 \ \ B_1
A_2 \ \ B_2
\vdots
A_M \ \ B_M

出力

T 行に渡って標準出力に出力せよ.
i 行目には,i 個目のテストケースにおける答えを出力せよ.


入力例 1

1
2 2
1 2
2 1

出力例 1

0

1 → 2, 2 → 1 を選び,消すのが最適である.この入力は小課題 1, 2, 3, 5, 6 の制約を満たす.

入力例 2

1
4 3
2 1
3 2
4 1

出力例 2

2

3 → 2, 2 → 1 を消し,3 → 1 を追加するのが最適である.この入力は小課題 4, 6 の制約を満たす.

入力例 3

1
6 6
1 3
3 6
1 6
6 2
2 4
2 5

出力例 3

3

例えば,以下のように操作すると最適である.

  1. 1 → 3, 3 → 6 を消し,1 → 6 を追加する.この時,1 → 6 は 2 本ある.
  2. 1 → 6, 6 → 2 を消し,1 → 2 を追加する.なお,1 → 6 はまだ 1 本ある.
  3. 1 → 2, 2 → 5 を消し,1 → 5 を追加する.
この入力は小課題 6 の制約のみを満たす.

入力例 4

2
6 13
2 5
2 4
2 6
4 6
3 2
3 5
4 2
1 4
1 3
5 1
6 4
6 1
5 2
5 10
3 5
5 3
5 4
4 1
2 1
5 4
5 1
3 5
1 5
5 1

出力例 4

1
4

この入力は小課題 6 の制約のみを満たす.

Writer : define

D - Animal Show

実行時間制限: 2 sec / メモリ制限: 1024 MiB

配点 : 500

問題文

パ研合宿2020ではレクリエーションの一環として、N 人の人 1\ldots N を呼んで 1 人ずつ順番にアニマルショーをさせることにしました。

iA_i 種類の動物 a_{i,1},\ a_{i,2},\ldots,\ a_{i,{A_i}} を使ってショーを行います。ここで、動物の種類は 1 以上 5×10^5 以下の整数で表されます。

ところで、アニマルショーを行うにあたっては動物アレルギーを持つ人の安全を確保する必要があります。ショーをさせる人達にアンケートをしたところ、以下の事実が分かりました。

  • iB_i 種類の動物 b_{i,1},\ b_{i,2},\ldots,\ b_{i,B_i} に対してアレルギーを持っている。

i が動物 X へのアレルギーを持っている場合、人 i よりも前にショーを行う人が 1 人でも動物 X を使用しているとアレルギー反応を起こしてしまいます。全ての人がアレルギーを起こさないようなショーの順番が存在するか判定し、存在するならそのうちの 1 つを出力してください。

全ての人は自身のショーで使用する動物へのアレルギーを持っていないことが保証されます。


制約

  • 1\leq N\leq2×10^5
  • 1\leq A_i,\ B_i
  • 1\leq \sum A_i\leq5×10^5
  • 1\leq \sum B_i\leq5×10^5
  • 1\leq a_{i,j}\leq5×10^5
  • 1\leq b_{i,j}\leq5×10^5
  • a_{i,j}≠a_{i,k}\ (j≠k)
  • b_{i,j}≠b_{i,k}\ (j≠k)
  • a_{i,j}≠b_{i,k}
  • 入力は全て整数

小課題

  1. (50) N\leq8,\ \sum A_i\leq100,\ \sum B_i\leq100,\ a_{i,j}\leq100,\ b_{i,j}\leq100
  2. (100) N\leq9,\ \sum A_i\leq2000,\ \sum B_i\leq2000,\ a_{i,j}\leq2000,\ b_{i,j}\leq2000
  3. (100) N\leq1000,\ \sum A_i\leq2000,\ \sum B_i\leq2000,\ a_{i,j}\leq2000,\ b_{i,j}\leq2000
  4. (250) 追加の制約はない。

入力

入力は以下の形式で標準入力から与えられます。

\(N\)
\(A_1\)
\(a_{1,1}\) \(a_{1,2}\) \(\ldots\) \(a_{1,A_1}\)
\(B_1\)
\(b_{1,1}\) \(b_{1,2}\) \(\ldots\) \(b_{1,B_1}\)
\(A_2\)
\(a_{2,1}\) \(a_{2,2}\) \(\ldots\) \(a_{2,A_2}\)
\(B_2\)
\(b_{2,1}\) \(b_{2,2}\) \(\ldots\) \(b_{2,B_2}\)
\(︙\)
\(A_N\)
\(a_{N,1}\) \(a_{N,2}\) \(\ldots\) \(a_{N,A_N}\)
\(B_N\)
\(b_{N,1}\) \(b_{N,2}\) \(\ldots\) \(b_{N,B_N}\)

出力

条件を満たすショーの順番が存在する場合、i 番目に人 P_i がショーを行うとして i の昇順に P_i を空白区切りで出力してください。順番が存在しない場合は -1 を出力してください。

ジャッジの都合上末尾の改行を忘れていたり、末尾に余分な空白が入っていたりすると不正解となります。注意してください。

入力例1

2
2
1 2
1
3
2
1 3
1
4

出力例1

1 2

ショーの順番を逆にした場合、人 1 が動物 3 に対するアレルギー反応を起こしてしまいます。

このサンプルは全ての小課題の制約を満たします。

入力例2

2
2
1 2
2
3 4
2
3 4
2
1 2

出力例2

-1

どのような順番でショーをしても、いずれかの人がアレルギー反応を起こしてしまいます。

このサンプルは全ての小課題の制約を満たします。

入力例3

3
3
1 3 4
2
2 5
2
1 8
2
9 7
2
3 8
2
1 4

出力例3

3 2 1

このサンプルは全ての小課題の制約を満たします。

Writer : penguinman


E - 老朽化対策

実行時間制限: 2 sec / メモリ制限: 1024 MiB

配点 : 800

問題文

パ研王国は無限に広がる二次元平面の形をしています。パ研王国には N 本の道路と M 軒の家があり、i\ (1\leq i\leq N) 本目の道路は y=a_ix+b_i の式で表される直線の形をしていて、また i\ (1\leq i\leq M) 軒目の家は座標 (x_i,\ y_i) に位置しています。

パ研王国では道路の老朽化が問題になっており、0 本以上の道路を選んで取り壊すことになりました。道路を 0 本以上選んで取り壊す方法は 2^N 通りありますが、それぞれについて 1 本以上の壊されていない道路の上にある家の軒数を数え、その総和を 10^9+7 で割った余りを求めてください。


制約

  • 1\leq N,\ M\leq10^5
  • -5×10^4\leq a_i\leq5×10^4
  • 0\leq b_i\leq5×10^4
  • 0\leq x_i,\ y_i\leq5×10^4
  • 入力は全て整数

小課題

  1. (50 点) N=1
  2. (50 点) N\leq 10,\ M\leq2000
  3. (100 点) M\leq100
  4. (200 点) a_i≠a_j\ (i≠j)
  5. (400 点) 追加の制約はない.

入力

入力は以下の形式で標準入力から与えられます。

\(N\) \(M\)
\(a_1\) \(b_1\)
\(a_2\) \(b_2\)
\(︙\)
\(a_N\) \(b_N\)
\(x_1\) \(y_1\)
\(x_2\) \(y_2\)
\(︙\)
\(x_M\) \(y_M\)

出力

総和を 10^9+7 で割った余りを求めてください。出力の最後に改行を忘れないでください。

入力例1

2 2
1 2
2 1
1 3
2 5

出力例1

5

道路の壊され方には以下の 4 通りがあります。

  1. 1,\ 2 本目の道路を壊す。1 軒目の家も 2 軒目の家も道路上にない。
  2. 1 本目の道路を壊す。1 軒目の家も 2 軒目の家も 2 本目の道路上にある。
  3. 2 本目の道路を壊す。1 軒目の家は 1 本目の道路上にあるが、2 軒目の家は道路上にない。
  4. 1 本も道路を壊さない。1 軒目の家は 1,\ 2 本目の道路上にあり、2 軒目の家も 2 本目の道路上にある。
これら全てにおける、問題文中の条件を満たす家の軒数の総和は 5 となるため、5 を出力します。

このサンプルは小課題 2,\ 3,\ 4,\ 5 の制約を満たします。

入力例2

2 5
1 3
1 3
2 5
2 5
2 5
2 5
2 5

出力例2

15

このサンプルは小課題 2,\ 3,\ 5 の制約を満たします。

入力例3

4 3
1 5
2 3
-1 11
3 2
1 5
3 8
2 7

出力例3

36

このサンプルは小課題 2,\ 3,\ 4,\ 5 の制約を満たします。

Writer : penguinman


F - 来年も本選に20人送り込むので覚悟しておいてください

実行時間制限: 2 sec / メモリ制限: 1024 MiB

配点: 800

問題文

時は20XX年、パ研部室は室内で問題を解くとレートが 2 倍になる機能を獲得していた。 しかし、超常現象と化したパ研部室であろうとも部員たちのレートに差があることはどうしようもなく、ある日このことを嘆いたパ研部長は部員たちのレートを平等に再分配することにした。

部長の計画が決行される日、パ研には N 人の部員が訪れる。 i 番目の部員はレート A_i であり、時刻 L_i にパ研部室に入り、時刻 R_i に部室を去る。複数の部員が同時刻に出たり入ったりすることはない。
部長は部員がパ研の出入口を通るとき、つまり部室に入るときと去るときに部員のレートから任意の整数を引いて、その分だけ自らのレートに足すことができる。 ただし、この操作のどの時点でも部員、部長のレートが負の値になってはならない。

部長が操作を行った時、部員 i のレートの遷移は以下のようになる。ここで、 E とは部長のレートである。

  • 部室に入る前は A_i である。
  • パ研部室に入る。部長に x (-E \leq x \leq A_i) 引かれる。部長、部員 i のレートはそれぞれ E+x, A_i-x になる。
  • パ研部室で問題を解く。レートが 2 倍になる。
  • パ研部室を去る。部長にレートを y (-E' \leq y \leq A_i')引かれる。部長、部員 i のレートはそれぞれ E'+y, A_i'-y になる。ここで、 E',A_i' というのは、部員 i が部室を去る時点での部長、部員 i のレートである。

計画開始から終了までの中で、部長のレート E が出入口での操作以外により増減することはない。

あなたの仕事は、部長がすべての操作を終えた時の「部長を除く部員のレートの最小値」の最大値を求めることだ。

制約

  • 1 \leq N \leq 10^5
  • 1 \leq E \leq 10^9
  • 1 \leq A_i \leq 10^9
  • 1 \leq L_i < R_i \leq 2N (1 \leq i \leq N)
  • L_i, R_iの値はすべて異なる。

部分点

  • 小課題 1 (50点): 1 \leq N \leq 4, 1 \leq E \leq 3, 1 \leq A_i \leq 3
  • 小課題 2 (200点): R_i < L_j (1 \leq i < j \leq N)
  • 小課題 3 (550点): 追加の制約はない。

入力

入力は以下の形式で与えられる。

N\ E
A_1\ A_2\ \dots\ A_{N-1}\ A_N
L_1\ R_1
L_2\ R_2
\vdots
L_N\ R_N

出力

問題文で指示された値を出力しなさい。 答えが 10^{12}以上になる場合は、答えの代わりに 'inf' と出力しなさい。


入力例1

2 2
1 1
1 2
3 4

出力例1

4

この時、部長は次のような行動をとる。

時刻 1: 部員1にレートを 1 与える。部員1のレートは 2 となる。
時刻 2: 部員1がレート 4 となって去る。
時刻 3: 部員2にレートを 1 与える。部員2のレートは 2 となる。
時刻 4: 部員2がレート 4 となって去る。

部員のレートの最小値を 5 以上とすることはできないので、最小値は 4 となる。
なお、このサンプルは小課題1,2の制約を満たす。


入力例2

4 2
2 3 1 3
2 4
1 7
3 8
5 6

出力例2

7

この例は小課題1の制約を満たす。


入力例3

6 4098
8 6 9 1 2 1
1 3
5 9
4 11
8 12
2 10
6 7

出力例3

2532

この例は小課題3の制約を満たす。

Writer : Thistle

G - 旅人計画問題

実行時間制限: 2 sec / メモリ制限: 1024 MiB

配点 : 800

問題文

penguinman は作問作業に疲れたため、パ研王国を旅することにしました。

パ研王国は N 個の都市 1,\ 2,\ \ldots,\ NN-1 本の道路からなります。i 本目の道路は都市 u_i と都市 v_i を双方向に結んでいて、長さは w_i です。任意の都市から任意の都市まで、いくつかの道路を用いることで移動することができます。

はじめ penguinman は都市 1 にいて、K 回に渡って「今いる都市からいくつかの道路を使って他の都市へ移動する」という行動を繰り返すことで旅をしようとしています。同じ都市を複数回訪れても構いませんが、penguinman は歩くのが嫌いなため、歩く距離の合計が最小になるように旅をしたいです。

ところで、旅にはアクシデントがつきものです。そこで penguinman は、i=1,\ 2,\ldots,\ Q について以下の質問に事前に答えておくことにしました。

  • r_i 本目の道路が通れなくなったとして、移動回数 Kk_i と定めた時の移動距離の合計の最小値はいくつか。
これらの質問全てに答え切ることは、penguinman には難しすぎました。彼の代わりにこれらの質問全てに答えてあげてください。


制約

  • 1\leq N,\ Q\leq10^5
  • 1\leq u_i,\ v_i\leq N
  • u_i≠v_i
  • 1\leq w_i\leq 10^9
  • 1\leq r_i\leq N-1
  • 1\leq k_i\leq10^9
  • 任意の都市から任意の都市までいくつかの道路を用いることで移動できる
  • 入力は全て整数

小課題

  1. (200) N\leq2000,\ Q\leq2000
  2. (200) k_i は一定
  3. (200) N\leq k_i
  4. (200) 追加の制約はない。

入力

入力は以下の形式で標準入力から与えられます。

\(N\) \(Q\)
\(u_1\) \(v_1\) \(w_1\)
\(u_2\) \(v_2\) \(w_2\)
\(︙\)
\(u_{N-1}\) \(v_{N-1}\) \(w_{N-1}\)
\(r_1\) \(k_1\)
\(r_2\) \(k_2\)
\(︙\)
\(r_Q\) \(k_Q\)

出力

i 行に渡って出力してください。i 行目には i 個目の質問への答えを出力してください。

それぞれの質問において、penguinman が都市 1 から任意の他の都市へ移動できない場合は -1 を、移動出来る場合は移動距離の合計の最小値を出力してください。

入力例1

5 8
5 1 5
4 5 2
2 5 4
3 5 2
3 2
4 8
2 4
3 8
4 3
1 8
3 10
2 1

出力例1

7
19
11
19
9
-1
23
5

このサンプルは小課題 1,\ 4 の制約を満たします。

Writer : penguinman

H - 旅立ちの日に

実行時間制限: 2 sec / メモリ制限: 1024 MiB

配点 : 1800

問題文

あなたと kaage 君(以降「あなたたち」とする)は、N*N のグリッド上において、二人組になって自転車でオリエンテーリングをしている。グリッドの上から(0-indexed で) i 行目、左から(0-indexed で) j 列目のマスは (i,j) と表される。以下に示されるオリエンテーリングのルールのもと、オリエンテーリングの終了時の「スコア」をなるべく高くすることが、あなたたちの目的である。

  • あなたたちは、時刻 0 にマス (sx,sy) を出発する。
  • オリエンテーリングをするフィールドは、0\leq i,j<N を満たす任意の整数 i,j を用いて (i,j) で表されるマス全体である。オリエンテーリングのあいだ、あなたたちはこの外に出ることはできない。
  • フィールドのマスは、「陸」「海」の 2 種類に分かれている。「陸」マスにいるとき、あなたたちはそれぞれ別々に,1 分かけて上下左右に隣接する「陸」マスに移動するか,その場にとどまることができる。「海」マスに入ることはできない。
  • あなたたちが「スコア」を獲得する方法は、最初に与えられる M 個の「ミッション」を達成することである。ミッションには次の 3 種類があり、それぞれを達成すると、ミッション 1 つにつき S_1, S_2, S_3 点が獲得できる。

    • ミッション 1: あるマス (x, y) を、二人で同時に訪れる。
    • ミッション 2: あるマス (x, y) を、二人のうちどちらかが訪れる。
    • ミッション 3: あるマスの集合 (x_1, y_1),(x_2,y_2),\cdots,(x_k,y_k) に含まれるマス全部を、それぞれ二人のうちどちらかが訪れる。

入力

入力は以下の形式で標準入力から与えられる。

\(N\) \(T\) \(M\) \(sx\) \(sy\)
\(S_1\) \(S_2\) \(S_3\)
\(v_{0,0}\) \(v_{0,1}\) \(\cdots\) \(v_{0,N-1}\)
\(\vdots\)
\(v_{N-1,0}\) \(v_{N,1}\) \(\cdots\) \(v_{N-1,N-1}\)
Mission_1\\
Mission_2\\
\vdots\\
Mission_M

\(v_{i,j}\) は . であるか、- であるかのいずれかである。v_{i,j}. のときマス (i,j) が「陸」であることを、- のとき「海」であることを表す。

また、Mission_i はミッションを表し、それぞれ次のような形式である。

\(1\) \(x_i\) \(y_i\)

ミッション 1 を表し、訪れるべきマスは (x_i,y_i) である。

\(2\) \(x_i\) \(y_i\)

ミッション 2 を表し、訪れるべきマスは (x_i,y_i) である。

\(3\) \(k_i\)
\(x_{i,1}\) \(y_{i,1}\)
\(x_{i,2}\) \(y_{i,2}\)
\vdots
\(x_{i,k_i}\) \(y_{i,k_i}\)

ミッション 3 を表し、訪れるべきマスは (x_{i,1}, y_{i,1}),(x_{i,2},y_{i,2}),\cdots,(x_{i,k_i},y_{i,k_i}) である。

出力

あなたたちは、すべての 1\leq i\leq T について、オリエンテーリング開始 i 分後にそれぞれ二人がいるマス目の位置を、 i 行目に空白区切りで出力しなければならない。ただし、題意に反するような移動をした場合、この問題におけるあなたの得点は 0 点となり、WA になる。例として、i 分後におけるあなたのいるマスが (x_{i,A},y_{i,A}), kaage 君のいるマスが (x_{i,B},y_{i,B}) のとき、i 行目の出力は次のようになる。

\(x_{i,A}\) \(y_{i,A}\) \(x_{i,B}\) \(y_{i,B}\)

制約

  • 入力は v_{i,j} を除きすべて整数である。
  • N=201
  • sx=sy=100
  • T=10000
  • M=1000
  • S_1=5,S_2=4,S_3=7
  • \(v_{i,j}\) は . であるか、- であるかのいずれかである。
  • 1\leq k_i \leq 5
  • 0\leq x_i,x_{i,j},y_i,y_{i,j}\leq 200
  • (x_i,y_i),(x_{i,j},y_{i,j}),(sx,sy) は「陸」のマスである。
  • (sx,sy) から海のマスを通らずにすべての海以外のマスに到達できる。
  • 「陸」のマスはフィールド全体の半分以上を占める。

テストケースの生成方法

テストケースは全部で 20 個あり、これらは次に示すアルゴリズムで生成される。

  1. N*N のグリッドを考える。[0,N) から一様ランダムに x_i,y_i を、[0,70] から一様ランダムに h_i を選び、 (x,y) を中心として高さ h_i の山を構成してグリッドに足す。具体的には、(x,y) には max(0, h_i-|x_i-x|-|y_i-y|) が加算される。
  2. 1. の操作を合計 50 回繰り返す。
  3. 2. でできたグリッドに対し、あるマスの数を X としたとき、X<30 なら「海」、そうでなければ「陸」とする。
  4. 3. でできたグリッドが制約を満たさない場合、1. に戻る。制約を満たせば、これが出力するグリッドとなる。
  5. M 個のミッションを生成する。ミッション番号は [1,3] から一様ランダムに選ばれ、ミッション 3 の座標の個数は [1,5] から一様ランダムに選ばれる。座標は、「陸」のマス全体から一様ランダムに選ばれる。
また、開発用ファイルを配布しているので、そちらも参照すること。

採点

あなたのこの問題での得点は、20 個のテストケースに対する得点の和を 80 で割って小数点以下を切り捨てた値となる。


入力例1

4 5 2 2 2
7 3 6
....
....
...-
..--
3 2
1 2
2 1
2 1 1

出力例1

1 2 2 2
1 1 2 1
2 1 2 1
2 2 2 2
2 2 2 2

これは説明用の入力例であり、制約を満たしていないことに注意せよ。 この例では、あなたたちのスコアは 9 となる。

Writer : kaage