Driny

Transkrypt

Driny
IX Junior Balkan Olympiad in Informatics
14th September – 19th September 2015
Ohrid, Macedonia
Day 1
DRINKS
(PL)
DRINY
Organizowanie konkursu informatycznego jest sporym wyzwaniem i angażuje dużo ludzi. Z JBOI
jest tak samo – masa komitetów bierze udział w planowaniu i przeprowadzeniu zawodów.
Dwoma najdziwniejszymi komitetami JBOI 2015 są Komitet Naukowy i Komitet Techniczny.
Komitety są odpowiedzialne za najróżniejsze rzeczy. Ludzie z tych dwóch komitetów bez przerwy
się kłócą o to, jak rozwiązać różne problemy, który komitet zasłużył na wyjście na plażę, który
komitet powinien dostać najlepsze jedzenie, itd.
Dzisiaj organizatorzy olimpiady dostaną N paczek napojów, które powinny być po równo
rozdzielone między oba komitety: N/2 paczek powinno zostać przydzielonych Komitetowi
Naukowemu, a pozostałe N/2 paczek – Komitetowi Technicznemu. Paczki różnią się między sobą
– mogą zawierać różne rodzaje napojów. Oba komitety mają różne gusta – mogą lubić konkretny
napój bardziej niż inny (a dany napój może być bardziej lubiany przez jeden z komitetów). Innymi
słowy: dla każdej z paczek, wiemy jak bardzo każdy z komitetów ją lubi. Przykładowo, powiedzmy,
że mamy 4 paczki napojów, a wartości w poniższej tabeli oznaczają, jak bardzo każdy z komitetów
lubi te paczki (nazwijmy te wartości współczynnikami zadowolenia):
Paczka #1
Paczka #2
Paczka #3
Paczka #4
Komitet Naukowy
10
10
25
30
Komitet
Techniczny
20
30
10
5
Zadowolenie komitetu jest równe sumie współczynników zadowolenia z paczek, które dostaną.
Pomóż organizatorom JBOI 2015 rozdzielić N opakowań pomiędzy dwa komitety tak, aby
zminimalizować różnicę ich poziomów zadowolenia. Innymi słowy, każdy z komitetów powinien
dostać dokładnie N/2 opakowań, a ich zadowolenie powinno się różnić jak najmniej.
W powyższym przykładzie, jeśli zdecydujemy się dać pierwsze dwie paczki Komitetowi
Naukowemu, ich poziom zadowolenia będzie równy 10+10=20, a pozostałe dwie paczki zostaną
dla Komitetu Technicznego, którego zadowolenie wyniesie 10+5=15. Różnica w poziomach
zadowolenia wyniesie więc |20–15|=5.
Z drugiej strony, jeśli damy pierwszą i trzecią paczkę Komitetowi Naukowemu (10+25=35), a
drugą i czwartą paczkę Komitetowi Technicznemu (30+5=35), różnica będzie równa |35-35|=0.
Page 1 of 2
IX Junior Balkan Olympiad in Informatics
14th September – 19th September 2015
Ohrid, Macedonia
Day 1
DRINKS
(PL)
Wejście
W pierwszej linii wejścia zapisano jedną liczbę całkowitą N – liczbę opakowań z napojami. W
każdej z następnych N linii zapisano dwie liczby całkowite Ai, Bi (1 <= Ai, Bi <= 10 000 000 000
000), oznaczające kolejno, jak bardzo Komitet Naukowy lubi dane napoje oraz jak bardzo Komitet
Techniczny je lubi (czyli współczynniki zadowolenia).
Wyjście
Twój program powinien wypisać trzy linie. W pierwszej linii powinna znaleźć się minimalna
różnica zadowolenia komitetów. W drugiej linii powinno znaleźć się dokładnie N/2 liczb,
oznaczających, które paczki powinny zostać przydzielone Komitetowi Naukowemu (możesz
wypisać je w dowolnej kolejności). W trzeciej linii powinny znaleźć się numery opakowań, które
należy przydzielić Komitetowi Technicznemu (również w dowolnej kolejności).
Przykład
Wejście
4
10
10
25
30
20
30
10
5
Wyjście
0
1 3
4 2
Punktacja
- W testach wartych co najmniej 20% punktów zachodzą dodatkowe warunki 2 <= N <= 20 oraz 1 <= Ai, Bi
<= 1000.
- W innych testach wartych co najmniej 40% punktów zachodzi dodatkowy warunek 2 <= N <= 36.
- W pozostałych testach N będzie z przedziału od 40 do 100. Ze względu na duże ograniczenie na
N, powinieneś zaimplementować jak najlepszy algorytm, który zmieści się w limitach czasowych.
Punkty będą przyznane również rozwiązaniom innym niż optymalne. Im lepsze będzie Twoje
rozwiązanie (tzn. im mniejsza będzie różnica zadowolenia komitetów), tym więcej punktów
dostanie.
Page 2 of 2

Podobne dokumenty