시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 128 MB | 54 | 20 | 13 | 29.545% |
Haker Limak napisał megawirusa. Każda z kopii wirusa ma swój numer (pierwsza kopia otrzymała numer 0). Co minutę tworzy się nowe pokolenie wirusów. Z wirusa o numerze i w pokoleniu k powstają wirusy (dzieci) o numerach 2 * i i 2 * i + 1 w pokoleniu k + 1. Nowo powstałe wirusy (2 * i, 2 * i + 1) nazwiemy dziećmi wirusa i z pokolenia k. Wirus v, jego dzieci, dzieci jego dzieci, itd. nazywamy potomkami wirusa v, a v jest nazywany ich przodkiem. Pierwsze pokolenie ma numer 0. Czyli w kolejnych pokoleniach żyją wirusy o następujących numerach:
Napisz program który:
W pierwszym wierszu podane są dwie liczby całkowite k, n oddzielone spacją. Pierwsza z liczb k, 1 ≤ k ≤ 512, jest numerem pokolenia. Druga z liczb n, 1 ≤ n ≤ 150 jest liczbą wirusów do wczytania. W następnych n wierszach podane są numery wirusów (po jednym w wierszu).
Program powinien wypisać jedną liczbę będącą największym numerem pokolenia zawierającego wspólnego przodka wszystkich wirusów.
2 2 1 2
0
Contest > Algorithmic Engagements > PA 2002.05 3-3번