Submission #70458112
Source Code Expand
import sys
input = sys.stdin.readline
INF = 10**9
def mat_mul(A, B):
C = [[INF]*3 for _ in range(3)]
for i in range(3):
ai = A[i]
for k in range(3):
C[i][k] = min(ai[0]+B[0][k], ai[1]+B[1][k], ai[2]+B[2][k])
return C
# Precompute for all 6-bit patterns (3 rows × 2 cols)
pre = {}
for mask in range(1<<6):
S = [['.']*2 for _ in range(3)]
for r in range(3):
for c in range(2):
if mask >> (r*2+c) & 1:
S[r][c] = '#'
d = [[INF]*3 for _ in range(3)]
for sr in range(3):
if S[sr][0] == '#': continue
dist = [[INF]*2 for _ in range(3)]
dist[sr][0] = 0
q = [(sr,0)]
while q:
r,c = q.pop()
v = dist[r][c]
for nr in (r-1,r+1):
if 0<=nr<3 and S[nr][c]=='.' and dist[nr][c]>v+1:
dist[nr][c]=v+1;q.append((nr,c))
nc = c^1
if S[r][nc]=='.' and dist[r][nc]>v+1:
dist[r][nc]=v+1;q.append((r,nc))
for tr in range(3):
d[sr][tr]=dist[tr][1]
pre[mask]=d
class SegTree:
def __init__(self, mats):
n=1
while n<len(mats): n<<=1
self.n=n
self.dat=[[[INF]*3 for _ in range(3)] for _ in range(2*n)]
I=[[0 if i==j else INF for j in range(3)] for i in range(3)]
for i in range(n):
self.dat[n+i]=mats[i] if i<len(mats) else I
for i in range(n-1,0,-1):
self.dat[i]=mat_mul(self.dat[i<<1],self.dat[i<<1|1])
def update(self,i,mat):
i+=self.n
self.dat[i]=mat
i>>=1
while i:
self.dat[i]=mat_mul(self.dat[i<<1],self.dat[i<<1|1])
i>>=1
def all(self): return self.dat[1]
N=int(input())
S=[list(input().strip()) for _ in range(3)]
Q=int(input())
def get_mask(j):
m=0
for r in range(3):
for c in range(2):
if S[r][j+c]=='#': m|=1<<(r*2+c)
return m
mats=[pre[get_mask(j)] for j in range(N-1)]
seg=SegTree(mats)
def ans():
d=seg.all()[0][2]
return -1 if d>=INF else d
out=[]
for _ in range(Q):
r,c=map(int,input().split())
r-=1;c-=1
S[r][c]='.' if S[r][c]=='#' else '#'
for j in [c-1,c]:
if 0<=j<N-1:
seg.update(j,pre[get_mask(j)])
out.append(str(ans()))
print("\n".join(out))
Submission Info
| Submission Time | |
|---|---|
| Task | F - Shortest Path Query |
| User | uparupaaa |
| Language | Python (PyPy 3.10-v7.3.12) |
| Score | 0 |
| Code Size | 2179 Byte |
| Status | TLE |
| Exec Time | 4432 ms |
| Memory | 358020 KiB |
Judge Result
| Set Name | Sample | All | ||||||
|---|---|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 0 / 525 | ||||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | 00_sample_00.txt, 00_sample_01.txt |
| All | 00_sample_00.txt, 00_sample_01.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 01_random_21.txt, 01_random_22.txt, 01_random_23.txt, 01_random_24.txt, 01_random_25.txt, 01_random_26.txt, 01_random_27.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 00_sample_00.txt | AC | 57 ms | 76400 KiB |
| 00_sample_01.txt | AC | 57 ms | 76388 KiB |
| 01_random_00.txt | AC | 147 ms | 96864 KiB |
| 01_random_01.txt | AC | 151 ms | 96940 KiB |
| 01_random_02.txt | AC | 149 ms | 96256 KiB |
| 01_random_03.txt | AC | 150 ms | 96808 KiB |
| 01_random_04.txt | TLE | 4430 ms | 319352 KiB |
| 01_random_05.txt | TLE | 4281 ms | 315912 KiB |
| 01_random_06.txt | AC | 2338 ms | 307020 KiB |
| 01_random_07.txt | TLE | 4432 ms | 344416 KiB |
| 01_random_08.txt | AC | 3929 ms | 317252 KiB |
| 01_random_09.txt | TLE | 4432 ms | 357240 KiB |
| 01_random_10.txt | TLE | 4432 ms | 357316 KiB |
| 01_random_11.txt | TLE | 4432 ms | 357776 KiB |
| 01_random_12.txt | TLE | 4432 ms | 357872 KiB |
| 01_random_13.txt | TLE | 4432 ms | 357588 KiB |
| 01_random_14.txt | TLE | 4432 ms | 357512 KiB |
| 01_random_15.txt | TLE | 4432 ms | 357036 KiB |
| 01_random_16.txt | TLE | 4432 ms | 357960 KiB |
| 01_random_17.txt | TLE | 4432 ms | 357600 KiB |
| 01_random_18.txt | TLE | 4432 ms | 357536 KiB |
| 01_random_19.txt | TLE | 4432 ms | 357260 KiB |
| 01_random_20.txt | TLE | 4432 ms | 357104 KiB |
| 01_random_21.txt | TLE | 4432 ms | 356616 KiB |
| 01_random_22.txt | TLE | 4432 ms | 358020 KiB |
| 01_random_23.txt | TLE | 4432 ms | 357456 KiB |
| 01_random_24.txt | TLE | 4428 ms | 357116 KiB |
| 01_random_25.txt | TLE | 4432 ms | 357324 KiB |
| 01_random_26.txt | TLE | 4432 ms | 357608 KiB |
| 01_random_27.txt | TLE | 4429 ms | 356860 KiB |