X Olimpiada Informatyczna 2002/2003
|
Zadanie: sum
|
Autor: Krzysztof Onak
|
Zawody III stopnia, dzień pierwszy |
Plik źródłowy: | sum.xxx (xxx=pas,c,cpp) |
Alternatywne formaty: PostScript | PDF
Mamy dany zbiór dodatnich liczb całkowitych A. Rozważmy teraz zbiór nieujemnych liczb całkowitych A' taki, że liczba x należy do A' wtedy i tylko wtedy, gdy x jest sumą pewnych elementów z A (elementy mogą się powtarzać). Na przykład, jeśli A = {2,5,7}, to do zbioru A' należą np. liczby 0 (suma 0 elementów), 2, 4 (2 + 2) i 12 (5 + 7 lub 7 + 5 lub 2 + 2 + 2 + 2 + 2 + 2), a nie należą liczby 1 i 3.
Napisz program, który:
W pierwszym wierszu znajduje się jedna liczba całkowita n --- liczba elementów w zbiorze A, 1 <= n <= 5000. Kolejne n wierszy zawiera elementy zbioru A, po jednym w wierszu. W wierszu i + 1 zapisana jest jedna dodatnia liczba całkowita ai, 1 <= ai <= 50000. A = {a1, a2, ..., an}, a1 < a2 < ... < an.
W wierszu o numerze n + 2 znajduje się jedna liczba całkowita k, 1 <= k <= 10000. Kolejne k wierszy zawiera po jednej liczbie całkowitej z zakresu od 0 do 1000000000, są to odpowiednio liczby b1, b2, ..., bk.
Wyjście powinno składać się z k wierszy. Wiersz o numerze i powinien zawierać słowo TAK, jeśli bi należy do A', a słowo NIE w przeciwnym przypadku.
Dla danych wejściowych:
3 2 5 7 6 0 1 4 12 3 2
poprawnym wynikiem jest:
TAK NIE TAK TAK NIE TAK