154922025-02-19 23:06:2842Túlcsorduláspypy3Accepted 100/100657ms64880 KiB
import sys
input=sys.stdin.readline

def s():
 lp=10**9+7
 N=int(input())
 A=list(map(int,input().strip()))
 B=list(map(int,input().strip()))
 Q=int(input())
 C=[0,A[0]]
 D=[0,1-B[0]]
 P=[1]
 for i in range(1,N):
  C.append((C[-1]*2+A[i])%lp)
  D.append((D[-1]*2+1-B[i])%lp)
  P.append((P[-1]*2)%lp)
 def V(X,Y,x,l):return (Y[x+l]-Y[x]*P[l])%lp

 for i in range(Q):
  x,y,l=map(int, input().split())
  cur=A[x]+B[y]
  if cur==0:
   print(1,end=' ')
   continue
  if cur==2:
   print(0,end=' ')
   continue
  if V(A,C,x,l)==V(B,D,y,l):
   print(1,end=' ')
   continue
  L=1
  H=l
  while H-L>1:
   M=(H+L)//2
   if V(A,C,x,M)==V(B,D,y,M):L=M
   else:H=M
  cur=A[x+L]+B[y+L]
  if cur==0:
   print(1,end=' ')
   continue
  if cur==2:
   print(0,end=' ')
   continue
  print()

s()

SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted41ms19676 KiB
2Accepted46ms19692 KiB
subtask240/40
3Accepted41ms19624 KiB
4Accepted50ms21176 KiB
5Accepted103ms22700 KiB
6Accepted57ms21384 KiB
7Accepted98ms23244 KiB
8Accepted131ms24612 KiB
9Accepted116ms23512 KiB
subtask330/30
10Accepted41ms19960 KiB
11Accepted148ms24036 KiB
12Accepted291ms37608 KiB
13Accepted268ms50556 KiB
14Accepted363ms64844 KiB
15Accepted397ms64624 KiB
16Accepted490ms62588 KiB
17Accepted513ms64872 KiB
subtask430/30
18Accepted143ms24376 KiB
19Accepted270ms64780 KiB
20Accepted209ms30620 KiB
21Accepted342ms55504 KiB
22Accepted433ms64880 KiB
23Accepted588ms64880 KiB
24Accepted493ms64620 KiB
25Accepted533ms62620 KiB
26Accepted481ms64812 KiB
27Accepted426ms64880 KiB
28Accepted657ms64864 KiB