結果
| 問題 |
No.1588 Connection
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2021-07-09 09:38:57 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
(最新)
QLE
(最初)
|
| 実行時間 | - |
| コード長 | 3,632 bytes |
| コンパイル時間 | 185 ms |
| コンパイル使用メモリ | 82,452 KB |
| 実行使用メモリ | 97,464 KB |
| 平均クエリ数 | 556.78 |
| 最終ジャッジ日時 | 2024-07-17 12:53:27 |
| 合計ジャッジ時間 | 5,818 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 28 WA * 3 |
ソースコード
import sys
from sys import exit, stdin
from collections import deque, defaultdict, Counter
from copy import deepcopy
from bisect import bisect_left, bisect_right, insort_left, insort_right
from heapq import heapify, heappop, heappush
from itertools import product, permutations, combinations, combinations_with_replacement
from functools import reduce
from math import gcd, sin, cos, tan, asin, acos, atan, atan2, degrees, radians, ceil, floor
from math import pi as PI
from random import randint
# from decimal import Decimal
sys.setrecursionlimit(500000)
INF = (1<<61)-1
EPS = 1e-10
MOD = 10**9+7
# MOD = 998244353
def input():
return stdin.readline()[:-1]
def intput():
return int(stdin.readline())
def minput():
return stdin.readline()[:-1].split()
def linput():
return stdin.readline()[:-1].split()
def mint():
return map(int,stdin.readline().split())
def lint():
return list(map(int,stdin.readline().split()))
def ilint():
return int(stdin.readline()), list(map(int,stdin.readline().split()))
def lcm(x,y):
return x*y//gcd(x,y)
def lgcd(l):
return reduce(gcd,l)
def llcm(l):
return reduce(lcm,l)
def powmod(n,i,mod=MOD):
return pow(n,mod-1+i,mod) if i<0 else pow(n,i,mod)
def div2(x):
return x.bit_length()
def div10(x):
return len(str(x))-(x==0)
def popcount(x):
return bin(x).count('1')
def digit(x,i,max_len=None):
s = str(x)
if max_len:
i -= max_len-len(s)
return int(s[i-1]) if i>0 else 0
def digitsum(x):
ans = 0
for i in range(div10(x)):
ans += digit(x,i+1)
return ans
def pf(x,mode='counter'):
C = Counter()
p = 2
while x>1:
k = 0
while x%p==0:
x //= p
k += 1
if k>0:
C[p] += k
p = p+2-(p==2) if p*p<x else x
if mode=='counter':
return C
S = set([1])
for k in C:
T = set()
for x in S:
for i in range(C[k]+1):
T.add(x*(k**i))
S = T
if mode=='set':
return S
if mode=='list':
return sorted(S)
def isprime(x):
if x<2:
return False
return len(pf(x,'set'))==2
def matmul(A, B):
# import numpy
A1, A2 = A >> 15, A & (1 << 15) - 1
B1, B2 = B >> 15, B & (1 << 15) - 1
X = np.dot(A1, B1) % MOD
Y = np.dot(A2, B2)
Z = np.dot(A1 + A2, B1 + B2) - X - Y
return ((X << 30) + (Z << 15) + Y) % MOD
def matpow(A, N):
P = np.eye(A.shape[0], dtype=np.int64)
while N:
if N & 1:
P = matmul(P, A)
A = matmul(A, A)
N >>= 1
return P
def zash(S):
lis = sorted(S)
dic = {}
for i,x in enumerate(lis):
dic[x] = i
return lis, dic
def pr(*x):
print(*x, sep='', end='') if len(x) else print()
def lprint(l):
for x in l: print(x)
def ston(c, c0='a'):
return ord(c)-ord(c0)
def ntos(x, c0='a'):
return chr(x+ord(c0))
def judge(x, l=['Yes', 'No']):
print(l[0] if x else l[1])
def debug(*x, flag=1):
if flag: print(*x)
######################################################
N,M=mint()
done=[[0]*N for _ in range(N)]
done[0][0]=1
done[0][1]=1
done[1][0]=1
q=deque()
q.append([0,1])
q.append([1,0])
cnt=0
dx=[-1,1,0,0]
dy=[0,0,-1,1]
while q:
if cnt>=3000:
judge(0)
exit()
x,y=q.popleft()
print(x+1,y+1,flush=True)
S=input()
if S=='Black':
if (x,y) in [(N-2,N-1),(N-1),(N-2)]:
judge(1)
exit()
for i,j in zip(dx,dy):
if 0<=x+i<N and 0<=y+j<N and not done[x+i][y+j]:
done[x+i][y+j]=1
q.append([x+i,y+j])
cnt+=1
judge(0)