結果

問題 No.282 おもりと天秤(2)
ユーザー maspymaspy
提出日時 2020-03-20 00:10:38
言語 Python3
(3.12.2 + numpy 1.26.4 + scipy 1.12.0)
結果
AC  
実行時間 1,358 ms / 5,000 ms
コード長 1,769 bytes
コンパイル時間 107 ms
コンパイル使用メモリ 12,928 KB
実行使用メモリ 60,572 KB
平均クエリ数 512.00
最終ジャッジ日時 2024-07-17 02:37:26
合計ジャッジ時間 24,546 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 585 ms
60,444 KB
testcase_01 AC 640 ms
60,428 KB
testcase_02 AC 610 ms
60,572 KB
testcase_03 AC 605 ms
60,572 KB
testcase_04 AC 598 ms
60,316 KB
testcase_05 AC 631 ms
60,188 KB
testcase_06 AC 639 ms
60,428 KB
testcase_07 AC 601 ms
60,316 KB
testcase_08 AC 658 ms
60,568 KB
testcase_09 AC 588 ms
60,192 KB
testcase_10 AC 961 ms
60,200 KB
testcase_11 AC 1,294 ms
60,572 KB
testcase_12 AC 968 ms
60,316 KB
testcase_13 AC 1,070 ms
59,928 KB
testcase_14 AC 1,239 ms
60,072 KB
testcase_15 AC 1,320 ms
60,056 KB
testcase_16 AC 753 ms
60,572 KB
testcase_17 AC 1,060 ms
60,448 KB
testcase_18 AC 1,196 ms
60,068 KB
testcase_19 AC 1,211 ms
60,060 KB
testcase_20 AC 1,358 ms
60,172 KB
testcase_21 AC 1,358 ms
60,296 KB
testcase_22 AC 1,347 ms
60,040 KB
testcase_23 AC 582 ms
60,296 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#!/usr/bin/ python3.8
import sys
readline = sys.stdin.readline
import numpy as np
N = int(readline())

# DEBUG = True
DEBUG = False


class Interactive:
    def __init__(self):
        self.ques_cnt = 0
        self.create_data()

    def create_data(self):
        self.C = np.arange(1, N + 1)
        np.random.shuffle(self.C)
        self.wt = self.C.argsort()
        print(self.C)
        print(self.wt)

    def resp_ques(self, *args):
        LR = np.array(args) - 1
        L = self.wt[LR[::2]]
        R = self.wt[LR[1::2]]
        ret = np.zeros(N, 'U1')
        ret[L > R] = '>'
        ret[L < R] = '<'
        ret[L == R] = '='
        word = ' '.join(ret)
        return word + '\n'

    def resp_ans(self, *args):
        C = np.array(args)
        print(np.all(self.C == C))


if DEBUG:
    interactive = Interactive()


def question(*args, offset='?'):
    if offset is None:
        print(*args, flush=True)
    else:
        print(offset, *args, flush=True)
    if DEBUG:
        resp = interactive.resp_ques(*args)
        print(resp, end='')
        return resp
    else:
        return readline()


def answer(*args, offset='!'):
    if offset is None:
        print(*args, flush=True)
    else:
        print(offset, *args, flush=True)
    if DEBUG:
        interactive.resp_ans(*args)
    else:
        exit()


wt = np.zeros(N + 1, np.int32)

for i in range(1, 512):
    LR = []
    for L in range(N):
        R = L ^ i
        if L < R < N:
            LR.append(L + 1)
            LR.append(R + 1)
    LR += [0] * (N + N - len(LR))
    resp = np.array(question(*LR).rstrip().split())
    LR = np.array(LR, np.int32)
    L = LR[::2]
    R = LR[1::2]
    wt[L] += (resp == '>')
    wt[R] += (resp == '<')

C = np.argsort(wt[1:]) + 1
answer(*C)
0