V Olimpiada Informatyczna 1997/98

Zadanie: PAK
Autor: Wojciech Rytter
Pakowanie kontenerów

II ETAP, PIERWSZY DZIEŃ ZAWODÓW - PIĽTEK 13 LUTEGO 1998 r.  
Plik źródłowy: PAK.??? (np. pas, c, cpp)
Plik wykonywalny: PAK.exe
Plik wejściowy: PAK.in
Plik wyjściowy: PAK.out

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ład

Rozważ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 4
Dwa 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.

Zadanie

Napisz program, który:

Wejście

W 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ście

Twój program powinien zapisać w pierwszym i jedynym wierszu pliku wyjściowego PAK.OUT:

Przykład

Dla pliku wejściowego PAK.IN:

5
1 3
1 2
3 5
2 1
1 4
2
1 1
2 1
poprawnym rozwiązaniem jest plik wyjściowy PAK.OUT:
3