結果
| 問題 | No.3496 協力カード当て |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-04-15 01:15:22 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 2,714 bytes |
| 記録 | |
| コンパイル時間 | 319 ms |
| コンパイル使用メモリ | 85,888 KB |
| 実行使用メモリ | 87,884 KB |
| スコア | 0 |
| 平均クエリ数 | 3.00 |
| 最終ジャッジ日時 | 2026-04-15 01:15:34 |
| 合計ジャッジ時間 | 11,165 ms |
|
ジャッジサーバーID (参考情報) |
judge3_1 / judge2_1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | RE * 16 |
ソースコード
p, n, m = map(int, input().split())
C = [0] + [0] * n
A = list(map(int, input().split()))
AA = A[:]
B = []
A.sort()
if 1 in A:
A = A[1:]
AC = [0] + [0] * m
for i in A:
AC[i] += 1
Q = []
for i in range(m + 1):
if AC[i] != 0:
Q.append((AC[i], i))
Q.sort()
QQ = []
pre = 1
for I in Q:
while I[0] != pre:
pre += 1
QQ.append((0, 1))
QQ.append(I)
# 【修正1】Ansを辞書として初期化
Ans = {}
# 【修正4】TURN内の計算用変数と被らないように、インデックス用変数を q_idx に変更
q_idx = 0
fin = 0
while True:
try:
turn = input()
except EOFError:
break
if turn == "TURN":
if q_idx < len(QQ):
# 【修正5】インタラクティブ問題なので flush=True を追加
print(QQ[q_idx][1], flush=True)
q_idx += 1
res, a, b = input().split()
# 【修正3】受け取った文字列を整数に変換して保存
Ans[int(a)] = int(b)
else:
BC = []
c = 0
for i in B:
# 【修正3】i は数値として比較・計算
if i == 1:
c += 1
else:
for j in range(c):
BC.append(i)
while len(BC) < n:
BC.append(1)
G = []
for i in range(m + 1):
# 【修正4】計算用変数を count_diff に変更
# 【修正3】Ansにキー i が無い場合のエラーを防ぐため .get(i, 0) を使用
count_diff = Ans.get(i, 0) - AA.count(i) - BC.count(i)
# count_diffがマイナスにならないよう max() で保護
for j in range(max(0, count_diff)):
G.append(i)
while len(G) < n:
G.append(m)
# 【修正5】flush=True を追加
print("GUESSED", *G, flush=True)
res, a, b = input().split()
# 【修正3】b を整数に変換して比較
if int(b) == 1:
fin += 1
if fin == 2:
exit()
else:
# 【修正2】input() を再度呼ぶのではなく、受け取り済みの turn を分割する
res, a, b = turn.split()
if res == "COUNT":
# 【修正3】整数に変換
Ans[int(a)] = int(b)
B.append(int(a))
if res == "GUESSED":
# 【修正3】整数に変換
if int(b) == 1:
fin += 1
if fin == 2:
exit()