154922025-02-19 23:06:2842Túlcsorduláspypy3Elfogadva 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()

RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva41ms19676 KiB
2Elfogadva46ms19692 KiB
subtask240/40
3Elfogadva41ms19624 KiB
4Elfogadva50ms21176 KiB
5Elfogadva103ms22700 KiB
6Elfogadva57ms21384 KiB
7Elfogadva98ms23244 KiB
8Elfogadva131ms24612 KiB
9Elfogadva116ms23512 KiB
subtask330/30
10Elfogadva41ms19960 KiB
11Elfogadva148ms24036 KiB
12Elfogadva291ms37608 KiB
13Elfogadva268ms50556 KiB
14Elfogadva363ms64844 KiB
15Elfogadva397ms64624 KiB
16Elfogadva490ms62588 KiB
17Elfogadva513ms64872 KiB
subtask430/30
18Elfogadva143ms24376 KiB
19Elfogadva270ms64780 KiB
20Elfogadva209ms30620 KiB
21Elfogadva342ms55504 KiB
22Elfogadva433ms64880 KiB
23Elfogadva588ms64880 KiB
24Elfogadva493ms64620 KiB
25Elfogadva533ms62620 KiB
26Elfogadva481ms64812 KiB
27Elfogadva426ms64880 KiB
28Elfogadva657ms64864 KiB