#!/usr/bin/env python3 # Načti vstup H, L = map(int, input().split()) lehatka = [int(input()) for _ in range(L)] # Ověř, že umíme hrochy rozmístit se zadanou minimální vzdáleností. # Funkci použijeme i k vypisování výstupu - proto když `vypisuj` je True, # funkce vypíše na standardní výstup vybrané pozice hrochů. def over(vzdalenost, vypisuj=False): # První hroch určitě může ležet na prvním (nultém) lehátku. predchozi_index = 0 if vypisuj: print(0) # Každému hrochovi zkusíme najít lehátko na nejnižším možném indexu. for _ in range(1, H): if lehatka[-1] - lehatka[predchozi_index] < vzdalenost: # Došla nám lehátka. return False # Binární vyhledávání pozice: dolni_mez = predchozi_index + 1 horni_mez = L - 1 while horni_mez > dolni_mez: stred = (dolni_mez + horni_mez) // 2 if lehatka[stred] - lehatka[predchozi_index] < vzdalenost: dolni_mez = stred + 1 else: horni_mez = stred # `dolni_mez` teď obsahuje nalezený index lehátka predchozi_index = dolni_mez if vypisuj: print(dolni_mez) # Podařilo se umístit všechny hrochy. return True # Binárně vyhledáme optimální vzdálenost mezi hrochy. dolni_mez = 0 horni_mez = lehatka[-1] - lehatka[0] while horni_mez > dolni_mez: stred = (dolni_mez + horni_mez) // 2 + 1 if over(stred): dolni_mez = stred else: horni_mez = stred - 1 print(dolni_mez) # Víme, že `dolni_mez` stačí k umístění všech hrochů, tak jen necháme funkci # `over` vypsat příslušné indexy. over(dolni_mez, True)