156922025-02-21 18:26:4342Színes szobák (50 pont)python3Time limit exceeded 41/50321ms17144 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')
SubtaskSumTestVerdictTimeMemory
base41/50
1Accepted0/016ms2992 KiB
2Accepted0/0289ms17144 KiB
3Accepted1/117ms3124 KiB
4Accepted1/117ms3124 KiB
5Accepted1/117ms3120 KiB
6Accepted1/117ms3120 KiB
7Accepted1/117ms3424 KiB
8Accepted1/117ms3124 KiB
9Accepted1/117ms3128 KiB
10Accepted1/119ms3380 KiB
11Accepted1/118ms3316 KiB
12Accepted1/120ms3344 KiB
13Accepted1/137ms4152 KiB
14Accepted1/121ms3824 KiB
15Accepted1/121ms3888 KiB
16Accepted1/137ms4020 KiB
17Accepted1/139ms4276 KiB
18Accepted1/139ms4248 KiB
19Accepted1/1141ms14480 KiB
20Accepted1/1298ms17108 KiB
21Accepted1/1190ms14676 KiB
22Accepted1/1211ms14676 KiB
23Accepted1/1266ms16080 KiB
24Accepted1/1298ms16896 KiB
25Accepted1/1284ms17104 KiB
26Accepted1/1293ms16988 KiB
27Accepted3/3237ms14116 KiB
28Time limit exceeded0/3321ms14132 KiB
29Accepted3/3244ms14132 KiB
30Time limit exceeded0/3308ms14132 KiB
31Accepted3/3296ms14132 KiB
32Time limit exceeded0/3316ms14200 KiB
33Accepted4/4152ms8608 KiB
34Accepted4/4272ms13472 KiB