結果
問題 | No.2962 Sum Bomb Bomber |
ユーザー |
![]() |
提出日時 | 2024-11-16 16:18:15 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 265 ms / 2,000 ms |
コード長 | 2,672 bytes |
コンパイル時間 | 454 ms |
コンパイル使用メモリ | 82,268 KB |
実行使用メモリ | 97,408 KB |
平均クエリ数 | 171.58 |
最終ジャッジ日時 | 2024-11-16 16:19:23 |
合計ジャッジ時間 | 18,404 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 64 |
ソースコード
from collections import defaultdict, deque, Counter # from functools import cache # import copy from itertools import combinations, permutations, product, accumulate, groupby, chain # from more_itertools import distinct_permutations from heapq import heapify, heappop, heappush, heappushpop import math import bisect from pprint import pprint from random import randint, shuffle, randrange # from sortedcontainers import SortedSet, SortedList, SortedDict import sys # sys.setrecursionlimit(2000000) input = lambda: sys.stdin.readline().rstrip('\n') inf = float('inf') mod1 = 10**9+7 mod2 = 998244353 def 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): self.x = x self.d = ask(x, 0) def __eq__(self, other): if not isinstance(other, f): return NotImplemented return self.d == other.d def __lt__(self, other): if not isinstance(other, f): return NotImplemented return self.d < other.d def __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) class g(object): def __init__(self, y): self.y = y self.d = ask(0, y) def __eq__(self, other): if not isinstance(other, g): return NotImplemented return self.d == other.d def __lt__(self, other): if not isinstance(other, g): return NotImplemented return self.d < other.d def __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)//3 c2 = r-(r-l)//3 if f(c1) < f(c2): r = c2 else: l = c1 return min(list(range(l, r+1)), key=lambda k: f(k)) def findMax(f, l, r): while r-l >= 3: c1 = l+(r-l)//3 c2 = r-(r-l)//3 if f(c1) > f(c2): r = c2 else: l = c1 return max(list(range(l, r+1)), key=lambda k: f(k)) L, R = -10**8, 10**8 N = int(input()) x = findMin(f, L, R) y = findMin(g, L, R) res(x, y)