trim

Time limit: 0.9s Memory limit: 512MB Input: trim.in Output: trim.out

Pentru un număr natural nenul xx reprezentat pe NN biți definim operația trim(x)trim(x) prin care eventualii biți de 00 de la stânga și de la dreapta numărului se elimină, nu și cei din interior. De exemplu, pentru n=6n = 6 şi x=4=0001002x = 4 = 000100_2, trim(4)=12trim(4) = 1_2; dacă n=6n = 6 şi x=10=0010102x = 10 = 001010_2 atunci trim(10)=1012=5trim(10) = 101_2 = 5.

Să considerăm un număr natural NN şi şirul numerelor naturale cuprinse între 11 şi 2N12^N -1. Aceste numere se reprezintă pe exact NN biți. Fiecărui număr din șir i se aplică operația trimtrim. Șirul se ordonează apoi după două criterii: primul este numărul biților de 11, iar dacă două numere au același număr de biți de 11, se vor ordona după al doilea criteriu, crescător după valori (în urma operației trimtrim). La final biții din fiecare număr se concatenează. De exemplu, dacă N=3N = 3, atunci șirul inițial este 1,2,3,4,5,6,71, 2, 3, 4, 5, 6, 7. Se aplică operația trimtrim și se obține șirul: 1,1,3,1,5,3,71, 1, 3, 1, 5, 3, 7. Ordonând mai întâi după numărul de biți de 1 și în caz de egalitate crescător se obține 1,1,1,3,3,5,71, 1, 1, 3, 3, 5, 7. Concatenând biții numerelor se obține 1111111101111, secvență cu pozițiile de la stânga la dreapta numerotate de la 11.

Cerință

Date numerele naturale NN și TT, precum și numerele naturale p1,p2,,pTp_1, p_2, \ldots, p_T, să se determine ce valoare are bitul de la acele poziții în șirul binar obținut?

Date de intrare

Fișierul de intrare conține pe prima linie numerele naturale NN și TT, iar pe a doua linie, separate prin spații, numerele naturale p1,p2,,pTp_1, p_2, \ldots, p_T.

Date de ieșire

Fișierul de ieșire va conține o succesiune de TT biți, fără spații, reprezentând răspunsul la fiecare întrebare.

Restricții și precizări

  • 1N1001 \leq N \leq 100
  • 2T100 0002 \leq T \leq 100\ 000
  • 1p1,p2,,pT10181 \leq p_1, p_2, \ldots, p_T \leq 10^{18}
  • Se garantează că p1,,pTp_1, \ldots, p_T nu sunt mai mari decât numărul de biți din secvența creată.
# Punctaj Restricții
1 7 N=5N = 5 şi p1,,pT109p_1, \ldots, p_T \leq 10^9
2 7 N20N \leq 20 şi p1,,pT109p_1, \ldots, p_T \leq 10^9
3 26 N60N \leq 60 şi p1,,pT109p_1, \ldots, p_T \leq 10^{9}
4 17 p1,,pT105p_1, \ldots, p_T \leq 10^{5}
5 26 p1,,pT5×1010p_1, \ldots, p_T \leq 5 \times 10^{10}
6 17 Fără restricții suplimentare

Exemple

trim.in

3 10
7 1 2 3 4 5 6 8 9 10

trim.out

1111111101

Considerăm inițial numerele de la 11 la 77. După aplicația operației trimtrim și sortare, ele devin 12,12,12,112,112,1012,11121_2, 1_2, 1_2, 11_2, 11_2, 101_2, 111_2. Așadar, după concatenare avem 1111111101111, iar elementele de pe pozițiile cerute sunt cele din exemplu.

trim.in

5 10
1 2 3 4 15 23 19 45 66 99

trim.out

1111011111

Considerăm inițial numerele de la 11 la 3131. După aplicația operației trimtrim și sortare, ele devin
12,12,12,12,12,112,112,112,112,1012,1012,1012,10012,10012,1000121112,1112,1112,10112,10112,11012,11012,100112,101012,110012,11112,11112,101112,110112,111012,1111121_2, 1_2, 1_2, 1_2, 1_2, 11_2, 11_2, 11_2, 11_2, 101_2, 101_2, 101_2, 1001_2, 1001_2, 10001_2 111_2, 111_2, 111_2, \\ 1011_2, 1011_2, 1101_2, 1101_2, 10011_2, 10101_2, 11001_2, 1111_2, 1111_2, 10111_2, 11011_2, 11101_2, 11111_2.

Așadar, după concatenare avem 1111111111111101101101100110011000111111111110111011110111011001110101110011111111110111110111110111111 iar elementele de pe pozițiile cerute sunt cele din exemplu.

Log in or sign up to be able to send submissions!