結果
問題 | No.513 宝探し2 |
ユーザー | Pump0129 |
提出日時 | 2018-04-30 10:55:45 |
言語 | Python3 (3.11.6 + numpy 1.26.0 + scipy 1.11.3) |
結果 |
AC
|
実行時間 | 43 ms / 2,000 ms |
コード長 | 1,199 bytes |
コンパイル時間 | 65 ms |
コンパイル使用メモリ | 11,052 KB |
実行使用メモリ | 24,416 KB |
平均クエリ数 | 23.00 |
最終ジャッジ日時 | 2023-09-24 01:44:53 |
合計ジャッジ時間 | 1,391 ms |
ジャッジサーバーID (参考情報) |
judge14 / judge11 |
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 43 ms
24,104 KB |
testcase_01 | AC | 38 ms
23,988 KB |
testcase_02 | AC | 36 ms
23,816 KB |
testcase_03 | AC | 36 ms
24,020 KB |
testcase_04 | AC | 36 ms
23,908 KB |
testcase_05 | AC | 35 ms
24,416 KB |
testcase_06 | AC | 32 ms
24,132 KB |
testcase_07 | AC | 31 ms
23,624 KB |
testcase_08 | AC | 33 ms
24,092 KB |
testcase_09 | AC | 31 ms
23,924 KB |
testcase_10 | AC | 31 ms
23,808 KB |
testcase_11 | AC | 31 ms
24,288 KB |
ソースコード
def center_pos(dic: dict): x = 0 y = 0 for p in dic: x += p[0] y += p[1] return int(x / 4), int(y / 4) def minimum_distance(dic: dict): min_dis = 100001 min_pos = () for p in dic: if dic[p] < min_dis: min_dis = dic[p] min_pos = p return min_pos def get_distance(p): print("{0} {1}".format(p[0], p[1]), flush=True) d = int(input()) if d == 0: exit() return d if __name__ == "__main__": init_pos_list = [(0, 0), (0, 100000), (100000, 0), (100000, 100000)] pos_dis_dic = {} for pos in init_pos_list: dis = get_distance(pos) pos_dis_dic[pos] = dis while True: cp = center_pos(pos_dis_dic) distance = get_distance(cp) min_dis_pos = minimum_distance(pos_dis_dic) min_dis = pos_dis_dic[min_dis_pos] pos_dis_dic.clear() pos_dis_dic[min_dis_pos] = min_dis pos_dis_dic[cp] = distance pos_a = (min_dis_pos[0], cp[1]) pos_b = (cp[0], min_dis_pos[1]) pos_dis_dic[pos_a] = get_distance(pos_a) pos_dis_dic[pos_b] = get_distance(pos_b)