87742024-01-29 18:30:07NagyLeoKutyavetélkedőpypy3Hibás válasz 85/100411ms190828 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
        current_points[i] = 1
        if T[i + 1] in can_do[T[i]]:
            current_points[i] = max(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
1Elfogadva41ms77052 KiB
2Hibás válasz39ms76868 KiB
subtask20/15
3Elfogadva41ms77196 KiB
4Elfogadva39ms77452 KiB
5Elfogadva46ms77540 KiB
6Elfogadva43ms78164 KiB
7Hibás válasz104ms143864 KiB
8Elfogadva103ms144032 KiB
9Elfogadva119ms144416 KiB
subtask319/19
10Elfogadva43ms78636 KiB
11Elfogadva46ms78844 KiB
12Elfogadva43ms79156 KiB
13Elfogadva39ms79556 KiB
14Elfogadva39ms79580 KiB
15Elfogadva50ms79440 KiB
16Elfogadva48ms80480 KiB
subtask434/34
17Elfogadva103ms94300 KiB
18Elfogadva108ms94304 KiB
19Elfogadva120ms94740 KiB
20Elfogadva112ms95360 KiB
21Elfogadva112ms95980 KiB
22Elfogadva114ms95960 KiB
subtask532/32
23Elfogadva224ms122512 KiB
24Elfogadva211ms127816 KiB
25Elfogadva240ms134412 KiB
26Elfogadva252ms137912 KiB
27Elfogadva250ms138184 KiB
28Elfogadva303ms150616 KiB
29Elfogadva404ms190692 KiB
30Elfogadva411ms190828 KiB
31Elfogadva268ms159224 KiB
32Elfogadva210ms138136 KiB
33Elfogadva351ms176312 KiB
34Elfogadva351ms176052 KiB