結果
| 問題 |
No.282 おもりと天秤(2)
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2015-09-19 00:13:04 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,280 bytes |
| コンパイル時間 | 247 ms |
| コンパイル使用メモリ | 12,800 KB |
| 実行使用メモリ | 27,992 KB |
| 平均クエリ数 | 111.62 |
| 最終ジャッジ日時 | 2024-07-16 06:03:19 |
| 合計ジャッジ時間 | 6,975 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 1 WA * 1 RE * 22 |
ソースコード
import sys
N = int(input())
def solve(N):
dp = [0] * N
for d in range(1, N):
for shift in range(2):
q = make_query(shift, d, N)
if not q:
continue
query = '? ' + ' '.join(map(str, q))
print(query)
sys.stdout.flush()
reply = input()
analyze(reply, q, dp)
answer = get_answer(dp)
print('! ' + ' '.join(map(str, answer)))
sys.stdout.flush()
def make_query(shift, d, N):
used = [False] * N
q = []
for idx in range(shift, N):
if used[idx]:
continue
idx2 = idx + d
if idx2 >= N:
break
q.extend([idx + 1, idx2 + 1])
used[idx] = True
used[idx2] = True
if not q:
return q
n_blank = 2 * N - len(q)
q.extend([0] * n_blank)
return q
def analyze(reply, q, dp):
idx = 0
for r in reply:
left, right = q[idx], q[idx + 1]
idx += 2
if left == 0:
return
if r == '>':
dp[left - 1] += 1
if r == '<':
dp[right - 1] += 1
print(dp)
def get_answer(dp):
answer = [0] * N
for i, w in enumerate(dp, 1):
answer[w] = i
return answer
solve(N)