87732024-01-29 18:23:30NagyLeoKutyavetélkedőpython3Hibás válasz 85/100610ms124184 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
1Elfogadva17ms11472 KiB
2Elfogadva18ms11684 KiB
subtask20/15
3Elfogadva17ms11776 KiB
4Elfogadva17ms12000 KiB
5Elfogadva17ms12116 KiB
6Elfogadva17ms12208 KiB
7Hibás válasz175ms27092 KiB
8Elfogadva175ms27236 KiB
9Elfogadva168ms27184 KiB
subtask319/19
10Elfogadva18ms12684 KiB
11Elfogadva19ms13152 KiB
12Elfogadva18ms13260 KiB
13Elfogadva18ms13356 KiB
14Elfogadva17ms13344 KiB
15Elfogadva17ms13148 KiB
16Elfogadva17ms13308 KiB
subtask434/34
17Elfogadva21ms14400 KiB
18Elfogadva28ms15132 KiB
19Elfogadva35ms16636 KiB
20Elfogadva35ms16736 KiB
21Elfogadva41ms17920 KiB
22Elfogadva41ms18292 KiB
subtask532/32
23Elfogadva250ms53912 KiB
24Elfogadva268ms57868 KiB
25Elfogadva291ms62600 KiB
26Elfogadva296ms64784 KiB
27Elfogadva296ms68848 KiB
28Elfogadva490ms86716 KiB
29Elfogadva610ms123864 KiB
30Elfogadva606ms124184 KiB
31Elfogadva456ms81428 KiB
32Elfogadva298ms51744 KiB
33Elfogadva507ms107344 KiB
34Elfogadva507ms106908 KiB