#!/usr/bin/python3 hajovny = [int(x) for x in input().strip().split()] domky = [int(x) for x in input().strip().split()] hajovny_a_domky = sorted([(x, False) for x in hajovny] + [(x, True) for x in domky]) def spocitej_vzdalenosti(seznam): aktualni_vzdalenost = 0 spocitane = list() # Chceme projít všechna obydlí, ale pro první se chovat jinak iterator = iter(seznam) posledni_pozice, je_domek = next(iterator) # Vezmeme speciálně první obydlí domku = int(je_domek) # Počet domků co jsme viděli je 1 nebo 0, podle toho jestli prvni obydlí je domek # Zbylá obydlí projdeme klasickým forem for pozice, je_domek in iterator: posledni_vzdalenost = abs(pozice - posledni_pozice) posledni_pozice = pozice aktualni_vzdalenost += domku * posledni_vzdalenost domku += je_domek if not je_domek: spocitane.append(aktualni_vzdalenost) return spocitane doleva = spocitej_vzdalenosti(hajovny_a_domky) doprava = reversed(spocitej_vzdalenosti(reversed(hajovny_a_domky))) vzdalenosti = [x + y for x, y in zip(doleva, doprava)] # Výsledek už máme, jen ho vypsat ve správném pořadí hajovny_s_indexy = enumerate(hajovny) hajovny_s_indexy = sorted(hajovny_s_indexy, key=lambda x: x[1]) # Setřídíme podle pozice hájoven indexy_hajoven = [i for i, _ in hajovny_s_indexy] vysledek = [vzdalenosti[i] for i in indexy_hajoven] print(' '.join(map(str, vysledek)))