結果
問題 |
No.3161 Find Presents
|
ユーザー |
|
提出日時 | 2025-05-23 21:47:40 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 342 ms / 4,000 ms |
コード長 | 1,390 bytes |
コンパイル時間 | 420 ms |
コンパイル使用メモリ | 82,384 KB |
実行使用メモリ | 107,928 KB |
平均クエリ数 | 2050.46 |
最終ジャッジ日時 | 2025-05-23 21:48:05 |
合計ジャッジ時間 | 24,145 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 80 |
ソースコード
import collections,sys,math,functools,operator,itertools,bisect,heapq,decimal,string,time,random #sys.setrecursionlimit(10**9) #sys.set_int_max_str_digits(0) input = sys.stdin.readline #alist = list(map(int,input().split())) #alist = [] #s = input() #n,m = map(int,input().split()) #for i in range(n): # alist.append(list(map(int,input().split()))) b = [(5,5),(1,1),(1,2),(1,3),(2,2),(2,3),(2,4),(100,100),(102,3847)] def query(xl,xr,yl,yr): print('?',xl,xr,yl,yr,flush=True) #assert 0 <= xl <= xr <= 1000000 and 0 <= yl <= yr <= 1000000 z = int(input()) return z z = 0 for i,j in b: if xl <= i <= xr and yl <= j <= yr: z = 1 return z ans = [] ll = 0 while 1: l,r = ll-1,1000000+1 while r-l > 1: mid =(l+r)//2 if query(0,1000000,ll,mid): r = mid else: l = mid ll = r+1 p = r #print(p) left = 0 while 1: l,r = left-1,1000000 while r-l > 1: mid = (l+r)//2 if query(left,mid,p,p): r = mid else: l = mid ans.append((r,p)) left = r+1 if left > 1000000 or query(left,1000000,p,p) == 0: break if ll > 1000000 or query(0,1000000,ll,1000000) == 0: break print('!',len(ans)) for i,j in ans: print(i,j)