87702024-01-29 18:11:25NagyLeoKutyavetélkedőpypy3Hibás válasz 85/100458ms201724 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
1Elfogadva48ms76716 KiB
2Elfogadva45ms77112 KiB
subtask20/15
3Elfogadva46ms77036 KiB
4Elfogadva43ms77376 KiB
5Elfogadva39ms77988 KiB
6Elfogadva46ms77988 KiB
7Hibás válasz122ms143516 KiB
8Elfogadva123ms144576 KiB
9Elfogadva109ms144228 KiB
subtask319/19
10Elfogadva39ms79036 KiB
11Elfogadva39ms79448 KiB
12Elfogadva46ms78940 KiB
13Elfogadva46ms79104 KiB
14Elfogadva43ms79280 KiB
15Elfogadva46ms79056 KiB
16Elfogadva45ms79992 KiB
subtask434/34
17Elfogadva92ms94036 KiB
18Elfogadva98ms93916 KiB
19Elfogadva98ms94040 KiB
20Elfogadva100ms94720 KiB
21Elfogadva103ms95224 KiB
22Elfogadva104ms94892 KiB
subtask532/32
23Elfogadva223ms123792 KiB
24Elfogadva232ms131756 KiB
25Elfogadva232ms137176 KiB
26Elfogadva240ms141744 KiB
27Elfogadva245ms149868 KiB
28Elfogadva312ms148340 KiB
29Elfogadva451ms201724 KiB
30Elfogadva458ms200940 KiB
31Elfogadva291ms169368 KiB
32Elfogadva197ms137448 KiB
33Elfogadva344ms187880 KiB
34Elfogadva338ms189888 KiB