|
|||||||||||||||
|
Pakowanie kontenerów
Pewna fabryka pakuje swoje wyroby do pudełek, które mają kształt walca. Podstawy wszystkich pudełek są takie same. Wysokość każdego pudełka jest zawsze nieujemną, całkowitą potęgą dwójki, tzn. liczbą postaci 2i, dla pewnego i=0,1,2,... . Liczbę i (wykładnik potęgi), która charakteryzuje wielkość pudełka, nazywamy rozmiarem tego pudełka. We wszystkich pudełkach znajduje się taki sam towar, ale w różnych pudełkach wartość towaru może być różna - towar wyprodukowany wcześniej jest tańszy. Dyrekcja fabryki wydała zarządzenie, żeby starać się wydawać najpierw towar najstarszy, czyli o najmniejszej wartości. Towar jest wywożony z magazynu w kontenerach. Każdy kontener, podobnie jak pudełka, ma kształt walca. Średnica kontenera jest niewiele większa od średnicy pudełek tak, że pudełka można swobodnie umieszczać w kontenerach. Wysokość każdego kontenera jest też nieujemną, całkowitą potęgą dwójki. Podobnie jak w przypadku pudełek, rozmiarem kontenera nazywamy wykładnik tej potęgi. Żeby bezpiecznie przewozić towar w kontenerze, należy go szczelnie wypełnić pudełkami, tzn. suma wysokości umieszczonych w kontenerze pudełek musi być równa wysokości tego kontenera. Do magazynu dostarczono zestaw kontenerów. Sprawdź, czy można pudełkami z magazynu wypełnić szczelnie wszystkie kontenery. Jeśli tak, to podaj minimalną wartość towaru jaki można wywieźć z magazynu w tych, szczelnie wypełnionych, kontenerach. PrzykładRozważmy magazyn, w którym znajduje się 5 pudełek o następujących rozmiarach i wartościach przechowywanego w nich towaru: 1 3 1 2 3 5 2 1 1 4Dwa kontenery o rozmiarach 1 i 2 można szczelnie wypełnić dwoma pudełkami o łącznej wartości 3, 4 lub 5, lub trzema pudełkami o łącznej wartości 9. Kontener o rozmiarze 5 nie da się szczelnie wypełnić pudełkami z magazynu. ZadanieNapisz program, który:
WejścieW pierwszym wierszu pliku wejściowego PAK.IN znajduje się liczba całkowita n, 1<=n<=10000. Jest to liczba pudełek w magazynie. W każdym z n kolejnych wierszy zapisane są dwie nieujemne liczby całkowite oddzielone pojedynczym odstępem. Są to charakterystyki jednego pudełka, odpowiednio, rozmiar pudełka i wartość zawartego w nim towaru. Rozmiar pudełka jest nie większy od 1000, natomiast wartość jest nie większa od 10000. W kolejnym wierszu podana jest dodatnia liczba całkowita q określająca, ile różnych rozmiarów mają kontenery dostarczone do magazynu. W każdym z kolejnych q wierszy jest zapisana para dodatnich liczb całkowitych oddzielonych pojedynczym odstępem. Pierwsza z tych liczb jest rozmiarem kontenera, natomiast druga jest liczbą dostarczonych kontenerów o tym rozmiarze. Wiadomo, że maksymalna liczba kontenerów nie przekracza 5000, a rozmiar kontenera jest nie większy od 1000. WyjścieTwój program powinien zapisać w pierwszym i jedynym wierszu pliku wyjściowego PAK.OUT:
PrzykładDla pliku wejściowego PAK.IN: 5 1 3 1 2 3 5 2 1 1 4 2 1 1 2 1poprawnym rozwiązaniem jest plik wyjściowy PAK.OUT: 3
|