結果

問題 No.282 おもりと天秤(2)
ユーザー maspymaspy
提出日時 2020-03-20 00:07:15
言語 Python3
(3.12.2 + numpy 1.26.4 + scipy 1.12.0)
結果
RE  
実行時間 -
コード長 1,709 bytes
コンパイル時間 89 ms
コンパイル使用メモリ 10,892 KB
実行使用メモリ 46,428 KB
平均クエリ数 1033.71
最終ジャッジ日時 2023-09-24 03:12:22
合計ジャッジ時間 14,055 ms
ジャッジサーバーID
(参考情報)
judge12 / judge15
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 RE -
testcase_01 RE -
testcase_02 RE -
testcase_03 RE -
testcase_04 RE -
testcase_05 RE -
testcase_06 RE -
testcase_07 RE -
testcase_08 RE -
testcase_09 RE -
testcase_10 RE -
testcase_11 RE -
testcase_12 RE -
testcase_13 RE -
testcase_14 RE -
testcase_15 RE -
testcase_16 RE -
testcase_17 RE -
testcase_18 RE -
testcase_19 RE -
testcase_20 RE -
testcase_21 RE -
testcase_22 RE -
testcase_23 RE -
権限があれば一括ダウンロードができます

ソースコード

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):
        pass


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())
    print(resp)
    LR = np.array(LR, np.int32)
    L = LR[::2]
    R = LR[1::2]
    wt[L] += (resp == '>')
    wt[R] += (resp == '<')

answer(*C)
0