結果
問題 | No.513 宝探し2 |
ユーザー | Pump0129 |
提出日時 | 2018-04-30 10:55:45 |
言語 | Python3 (3.12.2 + numpy 1.26.4 + scipy 1.12.0) |
結果 |
AC
|
実行時間 | 48 ms / 2,000 ms |
コード長 | 1,199 bytes |
コンパイル時間 | 541 ms |
コンパイル使用メモリ | 12,672 KB |
実行使用メモリ | 27,684 KB |
平均クエリ数 | 23.00 |
最終ジャッジ日時 | 2024-07-17 01:42:59 |
合計ジャッジ時間 | 1,779 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 48 ms
27,480 KB |
testcase_01 | AC | 48 ms
27,608 KB |
testcase_02 | AC | 45 ms
27,224 KB |
testcase_03 | AC | 46 ms
27,224 KB |
testcase_04 | AC | 46 ms
27,096 KB |
testcase_05 | AC | 44 ms
27,224 KB |
testcase_06 | AC | 43 ms
27,352 KB |
testcase_07 | AC | 44 ms
27,352 KB |
testcase_08 | AC | 45 ms
27,684 KB |
testcase_09 | AC | 43 ms
27,096 KB |
testcase_10 | AC | 43 ms
27,352 KB |
testcase_11 | AC | 44 ms
27,480 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)