Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2023

Old page Regulations Schedule RODO info Ranking

Problem description


Kolekcjoner monet
(kolekcjoner-monet)
Limit pamięci: 96 MB
Limit czasu: 0.20 s

Mały Jasio jest kolekcjonerem monet. Posiada on N monet, z których żadne dwie nie są tej samej wartości. Niestety, Jasio ostatnio narozrabiał – grając w piłkę ze swoim kolegą Andrzejem wybił szybę sąsiadowi. Nowa szyba kosztuje K bajtalarów. Jasio będzie musiał oddać część swojego zbioru monet o łącznej wartości dokładnie K bajtalarów, zatem z niektórymi okazami ze swojej kolekcji trzeba będzie się pożegnać.

Pomóż Jasiowi podjąć decyzję i wyznacz monety, które już stracił – takie, bez których nie da się wydać kwoty K bajtalarów.

Napisz program, który: wczyta wartości monet z kolekcji Jasia oraz wartość szyby, wyznaczy podzbiór monet, z którymi Jasio na pewno będzie się musiał pożegnać, wypisze wynik na standardowe wyjście.

Wejście

W pierwszym wierszu wejścia znajdują się dwie liczby naturalne N i K, określające liczbę monet w zbiorze Jasia oraz wartość nowej szyby. W drugim i ostatnim wierszu wejścia znajduje się N parami różnych liczb naturalnych Ai, pooddzielanych pojedynczymi odstępami. Są to wartości monet Jasia.

Gwarantowane jest, że pewien podzbiór monet Jasia pozwala zapłacić za szybę.

Wyjście

W pierwszym i jedynym wierszu wyjścia należy wypisać w kolejności rosnącej nominały monet, które są niezbędne do zapłacenia za szybę. Liczby te mają być pooddzielane pojedynczymi odstępami. Jeśli żaden nominał nie jest niezbędny do kupna szyby należy wypisać na wyjście OK.

Ograniczenia

1 ≤ N ≤ 1 000, 1 ≤ K ≤ 10 000, 1 ≤ Ai ≤ K.

Przykład

Wejście Wyjście Wyjaśnienie
4 12
7 5 4 3
5 

Za szybę można zapłacić na dwa sposoby 7 + 5 lub 3 + 4 + 5. W obu przypadkach należy niestety użyć nominału 5.