Limit pamięci: 64MB
Bajtocy zbiera Bajtemony. Każdy Bajtemon ma swoją cenę i wagę. Cena jest w bajtlarach i jest potęgą dwójki. Bajtocy ma do dyspozycji S bajtlarów. Bajtocy chce wydać wszystkie swoje bajtlary na Bajtemony, ale tak, żeby ich masa była jak najmniejsza.
Napisz program który
W pierwszej linii są dwie liczby całkowite oddzielone pojedynczym odstępem: n - liczba wszystkich Bajtemonów, 1 <= n <= 1 000 000, i S, 1 <= S < 264.
W kolejnych n liniach są opisy Bajtemonów. W i+1 linii, 1 <=i <= n, jest opis i-tego Bajtemonu. Opis składa się z dwóch liczb: e_i i w_i, 0 <= e_i <= 63, 1 <= w_i < 232. e_i oznacza, że cena i-tego Bajtemonu wynosi 2e_i, a w_i oznacza wagę.
Jeżeli nie istnieje taki podzbiór Bajtemonów, którego łączna cena wynosi S należy wypisać jedną liczbę 0.
W przeciwnym razie należy wypisać w pierwszym wierszu liczbę k oznaczającą liczbę kupionych Bajtemonów, a następnie w kolejnych k wierszach należy wypisać numery tych Bajtemonów w kolejności rosnącej.
Dla danych wejściowych:
7 6 2 8 0 2 1 5 0 1 3 1 2 7 1 4
prawidłową odpowiedzią może być:
3 2 4 6
[Zgłoś rozwiązanie] [Moje zgłoszenia]