156882025-02-21 18:20:2942Színes szobák (50 pont)python3Hibás válasz 0/50136ms14704 KiB
from sys import stdin, stdout
input=stdin.readline

def s():
 N,K,M = map(int,input().split())
 szobak = tuple(map(int,input().split()))
 lepesek=(tuple(map(int,input().split())) for i in range(M))

 def test(start):
  for a,b in lepesek:
   if szobak[start]==a:
    start+=b
    if start==N:
     return 1
    elif start==-1:
     return -1
  return 0

 res=0
 first=test(0)
 last=test(N-1)
 if last==1:
  if first==1:return N 
  else:
   lo=0
   hi=N-1
   while hi-lo>1:
    mid=(hi+lo)//2
    if test(mid)==1:hi=mid
    else:lo=mid
   res+=N-hi
 if first==-1:
  if last==-1:return N
  else:
   lo=0
   hi=N-1
   while hi-lo>1:
    mid=(hi+lo)//2
    if test(mid)==-1:lo=mid
    else:hi=mid
   res+=hi
 return res

stdout.write(str(s())+'\n')
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/50
1Hibás válasz0/016ms3144 KiB
2Hibás válasz0/0131ms14676 KiB
3Hibás válasz0/117ms3124 KiB
4Hibás válasz0/117ms3124 KiB
5Hibás válasz0/117ms3312 KiB
6Hibás válasz0/117ms3124 KiB
7Hibás válasz0/117ms3320 KiB
8Hibás válasz0/117ms3300 KiB
9Hibás válasz0/117ms3124 KiB
10Hibás válasz0/118ms3400 KiB
11Hibás válasz0/117ms3260 KiB
12Hibás válasz0/118ms3392 KiB
13Hibás válasz0/127ms3380 KiB
14Hibás válasz0/119ms3636 KiB
15Hibás válasz0/119ms3892 KiB
16Hibás válasz0/126ms3724 KiB
17Hibás válasz0/128ms3904 KiB
18Hibás válasz0/127ms3748 KiB
19Hibás válasz0/178ms14676 KiB
20Hibás válasz0/1136ms14704 KiB
21Hibás válasz0/1100ms14636 KiB
22Hibás válasz0/1108ms14576 KiB
23Hibás válasz0/1123ms14676 KiB
24Hibás válasz0/1130ms14612 KiB
25Hibás válasz0/1136ms14676 KiB
26Hibás válasz0/1134ms14676 KiB
27Hibás válasz0/3128ms9904 KiB
28Hibás válasz0/3128ms9904 KiB
29Hibás válasz0/3128ms9988 KiB
30Hibás válasz0/3129ms9780 KiB
31Hibás válasz0/3128ms9904 KiB
32Hibás válasz0/3127ms9936 KiB
33Hibás válasz0/474ms6752 KiB
34Hibás válasz0/4119ms6656 KiB