結果
問題 | No.2962 Sum Bomb Bomber |
ユーザー |
![]() |
提出日時 | 2024-11-16 16:14:35 |
言語 | PyPy3 (7.3.15) |
結果 |
RE
|
実行時間 | - |
コード長 | 2,854 bytes |
コンパイル時間 | 445 ms |
コンパイル使用メモリ | 82,380 KB |
実行使用メモリ | 97,780 KB |
平均クエリ数 | 301.00 |
最終ジャッジ日時 | 2024-11-16 16:14:56 |
合計ジャッジ時間 | 20,065 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | RE * 1 |
other | RE * 64 |
ソースコード
from collections import defaultdict, deque, Counter# from functools import cache# import copyfrom itertools import combinations, permutations, product, accumulate, groupby, chain# from more_itertools import distinct_permutationsfrom heapq import heapify, heappop, heappush, heappushpopimport mathimport bisectfrom pprint import pprintfrom random import randint, shuffle, randrange# from sortedcontainers import SortedSet, SortedList, SortedDictimport sys# sys.setrecursionlimit(2000000)input = lambda: sys.stdin.readline().rstrip('\n')inf = float('inf')mod1 = 10**9+7mod2 = 998244353def ceil_div(x, y): return -(-x//y)#################################################memo = {}def ask(x, y):if (x, y) not in memo:print(1, x, y, flush=True)memo[(x, y)] = int(input())return memo[(x, y)]def res(x, y):print(2, x, y, flush=True)exit()class f(object):def __init__(self, x):class g(object):def __init__(self, y):self.y = yself.d = ask(x, y)def __eq__(self, other):if not isinstance(other, g):return NotImplementedreturn self.d == other.ddef __lt__(self, other):if not isinstance(other, g):return NotImplementedreturn self.d < other.ddef __ne__(self, other):return not self.__eq__(other)def __le__(self, other):return self.__lt__(other) or self.__eq__(other)def __gt__(self, other):return not self.__le__(other)def __ge__(self, other):return not self.__lt__(other)self.x = xself.y = findMin(g, L, R)self.d = ask(x, self.y)def __eq__(self, other):if not isinstance(other, f):return NotImplementedreturn self.d == other.ddef __lt__(self, other):if not isinstance(other, f):return NotImplementedreturn self.d < other.ddef __ne__(self, other):return not self.__eq__(other)def __le__(self, other):return self.__lt__(other) or self.__eq__(other)def __gt__(self, other):return not self.__le__(other)def __ge__(self, other):return not self.__lt__(other)def findMin(f, l, r):while r-l >= 3:c1 = l+(r-l)//3c2 = r-(r-l)//3if f(c1) < f(c2): r = c2else: l = c1return min(list(range(l, r+1)), key=lambda k: f(k))def findMax(f, l, r):while r-l >= 3:c1 = l+(r-l)//3c2 = r-(r-l)//3if f(c1) > f(c2): r = c2else: l = c1return max(list(range(l, r+1)), key=lambda k: f(k))L, R = -10**8, 10**8N = int(input())x = findMin(f, L, R)res(x, f(x).y)