87712024-01-29 18:13:20NagyLeoKutyavetélkedőpython3Hibás válasz 85/100694ms155168 KiB
def max_points(K, N, M, pairs):
    tricks = set(range(1, K + 1))
    can_do = {i: set() for i in range(1, 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
1Elfogadva17ms11444 KiB
2Elfogadva18ms11800 KiB
subtask20/15
3Elfogadva18ms11952 KiB
4Elfogadva17ms11616 KiB
5Elfogadva17ms12236 KiB
6Elfogadva17ms12176 KiB
7Hibás válasz172ms26896 KiB
8Elfogadva171ms26976 KiB
9Elfogadva174ms27148 KiB
subtask319/19
10Elfogadva17ms12832 KiB
11Elfogadva17ms13248 KiB
12Elfogadva17ms13148 KiB
13Elfogadva17ms13228 KiB
14Elfogadva17ms13188 KiB
15Elfogadva17ms13340 KiB
16Elfogadva17ms13520 KiB
subtask434/34
17Elfogadva23ms14136 KiB
18Elfogadva28ms14732 KiB
19Elfogadva35ms16476 KiB
20Elfogadva37ms16644 KiB
21Elfogadva43ms17844 KiB
22Elfogadva43ms18484 KiB
subtask532/32
23Elfogadva261ms57224 KiB
24Elfogadva286ms66052 KiB
25Elfogadva317ms71136 KiB
26Elfogadva321ms76472 KiB
27Elfogadva330ms84120 KiB
28Elfogadva526ms88196 KiB
29Elfogadva694ms155168 KiB
30Elfogadva675ms155160 KiB
31Elfogadva458ms97580 KiB
32Elfogadva314ms54496 KiB
33Elfogadva561ms137648 KiB
34Elfogadva560ms137568 KiB