問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
T_{i,j,k,l} := (i,j) を左上とする縦 2^k、横 2^l の長方形領域の演算結果 の効率的な計算方法を説明します。r1 c1 r2 c2:(r1,c1) を左上、(r2,c2) を右下とする長方形領域の最小値 min(A_{r1,c1}, A_{r1,c1+1}, ..., A_{r1,c2}, A_{r1+1,c1}, A_{r1+1,c1+1}, ..., A_{r1+1,c2}, ..., A_{r2,c1}, A_{r2,c1+1}, ..., A_{r2,c2}) を出力する。(クエリが閉区間矩形で与えられることに注意してください)
入力は以下のフォーマットで与えられます。
M N Q
A_{0,0} A_{0,1} ... A_{0,N-1}
A_{1,0} A_{1,1} ... A_{1,N-1}
...
A_{M-1,0} A_{M-1,1} ... A_{M-1,N-1}
r1_1 c1_1 r2_1 c2_1
r1_2 c1_2 r2_2 c2_2
...
r1_Q c1_Q r2_Q c2_Q
期待する出力は Q 行からなります。
i 行目には i 個目のクエリに対する答えを出力してください。
最後は改行し、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
・1 ≦ M ≦ 500
・1 ≦ N ≦ 500
・1 ≦ Q ≦ 10^5
・1 ≦ A_{i,j} ≦ 10^9
・0 ≦ r1 ≦ r2 < M
・0 ≦ c1 ≦ c2 < N
4 5 5
1 11 10 20 10
4 12 2 9 12
4 4 4 17 19
18 5 17 14 6
0 1 2 1
0 0 3 4
0 3 0 4
0 3 0 3
2 1 3 2
4
1
10
20
4
4 4 5
3 111111121 222222232 333333338
111111118 222222229 333333334 444444454
222222227 333333338 444444448 555555563
333333337 444444446 555555556 666666671
1 1 3 1
0 1 3 3
3 2 3 3
1 0 2 0
1 0 3 3
222222229
111111121
555555556
111111118
111111118
9 6 10
600145912 684935765 647678299 818556625 218812060 22502680
636151920 667343218 821582155 929989267 544989250 490101825
72699658 928288358 106148348 897486398 637805573 640029476
362308466 576506509 628647600 246930147 668931506 432159370
580685672 826409275 110652215 147419333 277312852 262665867
57345751 736100715 248482788 77511339 324102316 323984301
501107378 7972238 939084254 283104562 951922136 233396030
857913883 101185275 436931392 892399578 669208474 244861394
197822105 4649708 18984982 38976859 278239588 585987984
6 1 6 2
2 2 2 4
4 4 6 5
1 1 2 2
2 0 2 5
3 2 3 5
1 2 6 2
6 1 7 1
0 1 8 2
7 1 8 5
7972238
106148348
233396030
106148348
72699658
246930147
106148348
7972238
4649708
4649708