問題一覧 > 通常問題

No.2502 Optimization in the Dark

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / リアクティブ問題 (詳しくはこちら
タグ : / 解いたユーザー数 35
作問者 : suisen / テスター : emthrm torisasami4 rniya
4 ProblemId : 9046 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2023-07-26 22:22:05

問題文

この問題はインタラクティブ問題です

上下にカードが積まれた山が 33 つあります。33 つの山にはそれぞれ番号 1,2,31,2,3 が振られています。

各山は、表面に 11 つの整数が書かれた 2n2n 枚のカードからなります。山 i (1i3)i\ (1\leq i\leq 3) の上から k (1k2n)k\ (1\leq k\leq 2n) 番目のカードに書かれた整数を Vi,kV _ {i, k} とします。

各カードは表面を下にして積まれているので、あなたは Vi,kV _ {i, k} の値を知りません。ただし、次の事実が成り立つことは分かっています。

  • 各山のカードは上から下に向けて昇順に並んでいる。つまり、1i3, 1k<l2n1\leq i \leq 3,\ 1\leq k\lt l \leq 2n を満たす任意の整数 i,k,li,k,l に対して、 Vi,kVi,lV _ {i, k} \leq V _ {i, l} が成り立つ。

さて、あなたは今から [ゲーム] をします。[ゲーム] は次の手順で進行します。

[ゲーム]

  1. X0X\leftarrow 0 とする。
  2. 33 つの山のうち空でないものの個数を aa とする。
    • a=0a = 0 ならば、ゲームを終了する。
    • a=1a = 1 ならば、X10100X\leftarrow 10 ^ {100} と更新してゲームを終了する。
    • a2a \geq 2 ならば、あなたは 22 つの空でない山 i,j (ij)i, j\ (i\neq j) を任意に選択する。選択した 22 つの山から、それぞれ一番上に積まれているカードを取り除く。このとき取り除いた 22 枚のカードに書かれている整数を x1,x2x _ 1, x _ 2 として、Xmax(X,x1+x2)X\leftarrow \max(X, x _1 + x _ 2) と更新して 2 に戻る。

あなたの目標はゲーム終了時の XX をできるだけ小さくすることです。ただし、ゲーム開始前にあなたは 高々 33 回だけ 次のような [質問] をすることができます。

[質問]

  • 1i3,1x2n,1j3,1y2n1\leq i\leq 3, 1\leq x\leq 2n, 1\leq j\leq 3, 1\leq y\leq 2n を満たす整数 i,x,j,yi,x,j,y を選択し、Vi,x<Vj,yV _ {i, x} \lt V _ {j, y} が成り立つかどうかを質問する。

山札の情報を全て知っている場合 (つまり、全ての Vi,kV _ {i, k} が既知の場合) に達成しうる ゲーム終了時の XX の最小値を XX ^ \ast とします。

ゲーム終了時の XX がちょうど XX ^ \ast と一致するような操作の手順を 11 つ求めてください。

なお、本問題のジャッジは適応的ではありません。つまり、各 Vi,kV_{i,k} の値は初めに固定されいて、途中で変化することはありません。

入出力

はじめに、正整数 nn が次の形式で 11 行に標準入力から与えられます。

nn

あなたは 高々 33 回だけ [質問] を行うことができます。[質問] において選択した整数 i,x,j,yi,x,j,y を次の形式で標準出力に出力してください。改行もしてください。ここで、i,ji, j11 以上 33 以下の整数であり、かつ x,yx, y11 以上 2n2n 以下の整数でなければなりません。

? i x j yi\ x\ j\ y

この [質問] に対して、Vi,x<Vj,yV _ {i, x} \lt V _ {j, y} が成り立つ場合は Yes が、成り立たない場合は No11 行に標準入力から与えられます。Vi,x=Vj,yV _ {i, x} = V _ {j, y} の場合も No が与えられることに注意してください。

高々 33 つの [質問] を終えたら、ゲーム終了時の XX がちょうど XX ^ \ast と一致するような操作の手順を次の形式で標準出力に出力してください。改行もしてください。ここで、t=1,2,,3nt = 1, 2, \ldots, 3n に対して it,jti _ t, j _ ttt 回目の操作で選択する 22 つの山の番号であり、相異なる 11 以上 33 以下の整数でなければなりません。なお、ちょうど 3n3n 回の操作終了時に山札が全て空となり、かつ X=X<10100X = X ^ \ast \lt 10 ^ {100} を満たすような操作手順が存在することを証明できます。

! i1 j1 i2 j2  i3n j3ni_1\ j_1\ i_2\ j_2\ \cdots\ i_{3n}\ j_{3n}

答えの出力を終えたら、直ちにプログラムを終了してください。

制約

  • nn11 以上 100100 以下の整数
  • カードに書かれた値は 11 以上 10610 ^ 6 以下の整数

注意

  • 出力を行うたびに末尾に改行を入れて標準出力を flush してください。そうしなかった場合のジャッジ結果は不定です。
  • 不正な出力を行った場合や規定の質問回数を超えた場合、あるいはプログラムが途中で終了した場合のジャッジ結果は不定です。特に、プログラムの実行中に実行時エラーが起こった場合のジャッジ結果は RE とは限りません。

サンプル

以下は n=1n=1VV が次のように決まっている場合の入出力例です。ただし、実際には VV は入力として与えられない ことに注意して下さい。

  • V1,1=2,V1,2=3V _ {1, 1} = 2, V _ {1, 2} = 3
  • V2,1=3,V2,2=4V _ {2, 1} = 3, V _ {2, 2} = 4
  • V3,1=4,V3,2=5V _ {3, 1} = 4, V _ {3, 2} = 5
Input Output 説明
1
はじめに n=1n=1 が入力として与えられます。
? 2 1 1 1
(i,x,j,y)=(2,1,1,1)(i,x,j,y) = (2,1,1,1) であり、V2,1<V1,1V _ {2, 1} \lt V _ {1, 1} かどうかを聞く [質問] を表します。
No
V2,1=3,V1,1=2V _ {2, 1} = 3, V _ {1, 1} = 2 より V2,1V1,1V _ {2, 1} \geq V _ {1, 1} です。
? 1 2 3 1
(i,x,j,y)=(1,2,3,1)(i,x,j,y) = (1,2,3,1) であり、V1,2<V3,1V _ {1, 2} \lt V _ {3, 1} かどうかを聞く [質問] を表します。
Yes
V1,2=3,V3,1=4V _ {1, 2} = 3, V _ {3, 1} = 4 より V1,2<V3,1V _ {1, 2} \lt V _ {3, 1} です。
! 2 3 1 3 1 2
11 回目の操作で山札 2,32,3 を選択し、22 回目の操作で山札 1,31,3 を選択し、33 回目の操作で山札 1,21,2 を選択することでゲームは終了し、ゲーム終了時の XX の値は 77 となります。X=7X ^ \ast = 7 であることを証明できるので、この出力は正答です。

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。