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
AC × 2
AC × 8
TLE × 22
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