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
33
34
def znajdz_podzialy_z_liderami(a):
    lider = None
    licznik = 0
    # Znalezienie lidera całego ciągu
    for liczba in a:
        if licznik == 0:
            lider = liczba
            licznik += 1
        elif lider == liczba:
            licznik += 1
        else:
            licznik -= 1

    # Sprawdzenie, czy znaleziony lider jest faktycznym liderem
    if a.count(lider) <= len(a) // 2:
        # Nie ma lidera całego ciągu, więc nie możemy podzielić ciągu na wymagane podciągi
        return 0

    # Zliczanie podziałów z liderem
    liczba_podzialow = 0
    aktualna_liczba_liderow = 0
    for i, liczba in enumerate(a):
        if liczba == lider:
            aktualna_liczba_liderow += 1
        if aktualna_liczba_liderow > (i + 1) // 2 and (a.count(lider) - aktualna_liczba_liderow) > (len(a) - i - 1) // 2:
            liczba_podzialow += 1
            aktualna_liczba_liderow = 0  # Reset licznika liderów dla nowego podciągu

    return liczba_podzialow

# Przykład użycia
n = 5
a = [1, 2, 3, 1, 2]
print(znajdz_podzialy_z_liderami(a))