問題一覧 > 通常問題

No.3627 Share the Median

レベル : / 実行時間制限 : 1ケース 1.000秒 / メモリ制限 : 512 MB / コミュニケーション問題 (詳しくはこちら
タグ : / 解いたユーザー数 9
作問者 : 👑 loop0919 / テスター : ぽえ kazuppa
ProblemId : 13468 / yukicoder contest 509 (順位表) / 自分の提出
問題文最終更新日: 2026-08-17 21:43:44
yukicoder contest 509の他の問題:

問題文

この問題はコミュニケーション問題(あなたの作成したプログラムが複数プロセスで動作し、ジャッジシステムとの入出力を介して対話を行う形式の問題)です。

$2$ 人のプレイヤー Alice, Bob が協力ゲームを行います。

Alice は長さ $N$ の整数列 $A = (A_1, A_2, \cdots, A_N)$ を持っており、 Bob は長さ $M$ の整数列 $B = (B_1, B_2, \cdots, B_M)$ を持っています。
ここで、 $N + M$ が奇数となる入力のみが与えられます。

Alice と Bob は双方の持っている整数列の長さを知っています。ただし、 $A$ の各要素の値は Alice のみが知っており、 $B$ の各要素の値は Bob のみが知っています。

Alice と Bob は、情報共有を高々 $Q$ 回繰り返すことができます。 $1$ 回の情報共有は以下のような一連の手続きです。

  • Alice は $1 \leq i \leq N$ を満たす整数 $i$ を、 Bob は $1 \leq j \leq M$ を満たす整数 $j$ を選ぶ。
  • Alice には $B_j$ の値が、 Bob には $A_i$ の値が同時に知らされる。

情報共有を繰り返した後、 Alice と Bob は $(A_1, A_2, \cdots, A_N, B_1, B_2, \cdots, B_M)$ の中央値を同時に解答します。(これは情報共有の回数には含まれません。)
双方の解答した答えがどちらも正しい結果であったとき、ゲームは成功します。そうでないとき、ゲームは失敗します。

ゲームに成功するように振る舞ってください。では、始めましょう。

中央値とは

$n$ が奇数のとき、長さ $n$ の数列 $X = (X_1, X_2, \cdots, X_n)$ の中央値とは、 $X$ を昇順に並べたときの $(n + 1) / 2$ 番目の値です。

制約

  • $\color{red}Q = 12$ または $\color{red}Q = 1000$
  • $1 \leq N, M \leq 1000$
  • $N + M$ は奇数
  • $1 \leq A_i, B_j \leq 10^9$
  • $Q, N, M, A_i, B_j$ は整数

部分点

この問題にはサブタスクによる部分点が設定されています。

サブタスク名配点制約
Easy20%(60点)$Q = 1000$
Hard80%(240点)$Q = 12$

入出力

この問題はコミュニケーション問題(あなたの作成したプログラムが複数プロセスで動作し、ジャッジシステムとの入出力を介して対話を行う形式の問題)です。
Alice として振る舞うあなたのプログラムと Bob として振る舞うあなたのプログラムが、ジャッジプログラムを介してゲームを行います。

ゲームの開始

まず、あなたのプログラムに対して以下の形式で入力が与えられるので、受け取ってください。

$\mathrm{player}$
$Q$
$N$ $M$
$X_1$ $X_2$ $\ldots$ $X_L$
  • $\mathrm{player}$ は文字列 Alice または文字列 Bob であり、以下のように説明される。
    • $\mathrm{player} =$ Alice のとき、これ以降あなたのプログラムは Alice として振る舞わなければならない。
    • $\mathrm{player} =$ Bob のとき、これ以降あなたのプログラムは Bob として振る舞わなければならない。
  • 情報共有を高々 $Q$ 回行うことができる。
  • Alice として振る舞っているとき、 $L = N$ を満たしており、 $A = (X_1, X_2, \cdots, X_L)$ であることを表す。
  • Bob として振る舞っているとき、 $L = M$ を満たしており、 $B = (X_1, X_2, \cdots, X_L)$ であることを表す。

その後、ゲームのルールに従って、情報共有解答のいずれかの行動を選ぶことを繰り返してください。

情報共有

情報共有を行う場合、以下の形式で出力してください。

share $k$
  • Alice として振る舞っているとき、 $k$ は $1 \leq k \leq N$ を満たす整数である必要がある。 $i = k$ として Bob に $A_i$ を知らせる。
  • Bob として振る舞っているとき、 $k$ は $1 \leq k \leq M$ を満たす整数である必要がある。 $j = k$ として Alice に $B_j$ を知らせる。

この操作は相手が情報共有を行うまで待ちますが、以下のいずれかを満たしたときゲームに失敗します。

  • $Q$ 回を超過して情報共有を行った。
  • 自分または相手がプログラムを終了した。
  • 自分が情報共有を選んだにも関わらず、相手が解答を選んだ。
  • 自分または相手が正しい形式で情報共有を行わなかった。

このとき、与えられる入力は $-1$ となります。この場合、すでに不正解と判定されているため、ただちにプログラムを終了してください。

双方が正しく情報共有を行った場合、以下の形式で入力が与えられます。

$v$

Alice として振る舞っているとき、 $v = B_j$ です。 Bob として振る舞っているとき、 $v = A_i$ です。

解答

解答を行う場合、以下の形式で出力してください。

answer $m$

ここで、 $m$ は $(A_1, A_2, \cdots, A_N, B_1, B_2, \cdots, B_M)$ の中央値である必要があります。この出力は情報共有の回数には含まれません。

その後、ただちにプログラムを終了してください。

注意点

  • 出力を行うたびに、末尾に改行を入れて標準出力を flush してください。そうしなかった場合、ジャッジ結果が TLE となる可能性があります。
  • 解答を行ったら(または $-1$ を受け取ったら)ただちにプログラムを終了してください。そうしなかった場合、ジャッジ結果は不定です。
  • 余計な改行は不当な形式の出力とみなされることに注意してください。
  • 本問題の実行時間制限 $1000$ [ミリ秒]、メモリ制限が $512$ [MB] であることに注意してください。

サンプル

サンプル
Alice の入力Alice の出力Bob の入力Bob の出力説明
Alice
12
3 2
1 5 3
Bob
12
3 2
4 2
情報共有の上限回数 $Q = 12$ です。Alice には $N, M, A$ 、 Bob には $N, M, B$ が与えられます。
$N = 3, ~ M = 2$ であり、 $A = (1, 5, 3), ~ B = (4, 2)$ です。
share 2 share 1 Alice は $i = 2$ を、 Bob は $j = 1$ を情報共有します。
4 5 Alice には $4 ~ (= B_1)$ が、 Bob には $5 ~ (= A_2)$ が知らされます。
share 3 share 2 Alice は $i = 3$ を、 Bob は $j = 2$ を情報共有します。
2 3 Alice には $2 ~ (= B_2)$ が、 Bob には $3 ~ (= A_3)$ が知らされます。
answer 3 answer 3 Alice と Bob が双方とも $3$ と解答します。
これは正しい答えであり、かつ情報共有の回数が $Q$ 以下であるため、ゲームに成功します。

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