87722024-01-29 18:22:59NagyLeoKutyavetélkedőpypy3Hibás válasz 85/100409ms190628 KiB
def max_points(K, N, M, pairs):
    can_do = [set() for i in range(K + 1)]
    for a, b in pairs:
        can_do[a].add(b)

    current_points = [0] * (N + 2)
    if T[N - 1] <= K:
        current_points[N - 1] = 1
    if T[N - 2] <= K:
        current_points[N - 2] = 1
        if T[N - 1] in can_do[T[N - 2]]:
            current_points[N - 2] = 2
    for i in range(N - 3, -1, -1):
        if T[i] > K:
            continue
        if T[i + 1] in can_do[T[i]]:
            current_points[i] = 1 + current_points[i + 1]
        if T[i + 2] in can_do[T[i]]:
            current_points[i] = max(current_points[i], 1 + current_points[i + 2])

    return max(current_points[0], current_points[1])


N, K = map(int, input().split())
T = list(map(int, input().split()))
M = int(input())
pairs = [tuple(map(int, input().split())) for _ in range(M)]

print(max_points(K, N, M, pairs))

RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva41ms77032 KiB
2Elfogadva46ms76664 KiB
subtask20/15
3Elfogadva50ms77104 KiB
4Elfogadva46ms77568 KiB
5Elfogadva43ms78156 KiB
6Elfogadva46ms78044 KiB
7Hibás válasz119ms144220 KiB
8Elfogadva118ms143812 KiB
9Elfogadva107ms144420 KiB
subtask319/19
10Elfogadva46ms78964 KiB
11Elfogadva43ms78648 KiB
12Elfogadva46ms78740 KiB
13Elfogadva48ms79076 KiB
14Elfogadva50ms78912 KiB
15Elfogadva48ms79304 KiB
16Elfogadva50ms79872 KiB
subtask434/34
17Elfogadva101ms94004 KiB
18Elfogadva101ms94272 KiB
19Elfogadva108ms94308 KiB
20Elfogadva104ms95332 KiB
21Elfogadva103ms95852 KiB
22Elfogadva112ms96268 KiB
subtask532/32
23Elfogadva223ms123380 KiB
24Elfogadva226ms127524 KiB
25Elfogadva244ms133992 KiB
26Elfogadva230ms138096 KiB
27Elfogadva250ms138288 KiB
28Elfogadva300ms150528 KiB
29Elfogadva402ms190628 KiB
30Elfogadva409ms190484 KiB
31Elfogadva266ms159512 KiB
32Elfogadva190ms138204 KiB
33Elfogadva307ms176680 KiB
34Elfogadva307ms176372 KiB