1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
def max_task_hours(n, k, t, duties):
    # Inicjalizacja zmiennych
    max_hours = -1
    for i in range(n):
        # Sprawdzamy, czy Bajtazar może opuścić spotkanie
        if duties[i] == '1' and (i + t < n):  # Spotkanie w biurze
            # Sprawdzamy, czy Bajtazar może wrócić do domu
            if i + t + t < n:
                # Liczymy bajtogodziny spędzone na zadaniach
                hours = duties[:i].count('3') + duties[i + t + t:].count('3')
                if hours > max_hours:
                    max_hours = hours
        elif duties[i] == '2':  # Zdalne spotkanie
            hours = duties[:i].count('3') + duties[i + 1:].count('3')
            if hours > max_hours:
                max_hours = hours

    # Sprawdzamy, czy Bajtazar nie opuścił więcej niż k spotkań
    if max_hours == -1 or duties.count('1') - (n - max_hours) > k:
        return -1

    return max_hours

# Przykład użycia
if __name__ == "__main__":
    # Wczytanie danych wejściowych
    n, k, t = map(int, input().split())
    duties = input().strip()

    # Wywołanie funkcji i wyświetlenie wyniku
    result = max_task_hours(n, k, t, duties)
    print(result)