Shuffle

Time limit: 0.8s Memory limit: 256MB Input: Output:

Se dau două numere naturale NN și QQ.

Se va genera un șir de numere A0,A1,,A2N1A_0,A_1,\ldots,A_{2^N-1} după următorii pași:

  • Inițial, Ai=iA_i=i, pentru fiecare 0i<2N0 \le i < 2^N.
  • Apoi, pentru fiecare KK de la 11 la NN, se împarte șirul în subsecvențe disjuncte de lungime 2K2^K, iar fiecare dintre aceste subsecvențe va fi oglindită.

De exemplu, pentru N=4N=4, șirul AA va fi generat în felul următor:

  • Inițial, A=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]A=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15].
  • După K=1K=1: A=[1,0,3,2,5,4,7,6,9,8,11,10,13,12,15,14]A=[\underline{1,0},\underline{3,2},\underline{5,4},\underline{7,6},\underline{9,8},\underline{11,10},\underline{13,12},\underline{15,14}].
  • După K=2K=2: A=[2,3,0,1,6,7,4,5,10,11,8,9,14,15,12,13]A=[\underline{2,3,0,1},\underline{6,7,4,5},\underline{10,11,8,9},\underline{14,15,12,13}].
  • După K=3K=3: A=[5,4,7,6,1,0,3,2,13,12,15,14,9,8,11,10]A=[\underline{5,4,7,6,1,0,3,2},\underline{13,12,15,14,9,8,11,10}].
  • După K=4K=4: A=[10,11,8,9,14,15,12,13,2,3,0,1,6,7,4,5]A=[\underline{10,11,8,9,14,15,12,13,2,3,0,1,6,7,4,5}].

Cerință

Va trebui să răspundeți la QQ interogări de următorul fel:

  • L R\text{L R}: Care este valoarea sumei AL+AL+1++ARA_L+A_{L+1}+\ldots+A_R?

Date de intrare

Pe prima linie se vor afla două numere NN și QQ, cu semnificațiile din enunț,

Pe fiecare dintre următoarele QQ linii se vor afla câte două numere LiL_i și RiR_i, capetele celor QQ interogări.

Date de ieșire

Pentru fiecare interogare (Li,Ri)(L_i,R_i), afișați valoarea sumei AL+AL+1++ARA_L+A_{L+1}+\ldots+A_R.

Restricții și precizări

  • 1N301 \leq N \leq 30;
  • 1Q200 0001 \leq Q \leq 200 \ 000
  • 0LiRi<2N0 \le L_i \le R_i < 2^N, pentru fiecare 1iQ1 \le i \le Q
# Punctaj Restricții
1 10 N10,Q1 000N \le 10, Q \le 1 \ 000
2 11 N20N \le 20
3 13 Pentru toate interogările, RiLi+110R_i-L_i+1 \le 10
4 19 Pentru toate interogările, RiLi+1500R_i-L_i+1 \le 500
5 22 Pentru toate interogările, Li=0L_i=0
6 16 1Q20 0001 \leq Q \leq 20 \ 000
7 9 Fără restricții suplimentare.

Exemplu

stdin

4 7
0 15
0 7
8 15
3 13
14 14
6 7
6 9

stdout

120
92
28
82
4
25
30

Explicație

Pentru prima interogare, A0+A1++A15=15162=120A_0+A_1+\ldots+A_{15}=\frac{15 \cdot 16}{2}=120.
Pentru a doua interogare, A0+A1++A7=8+9++15=92A_0+A_1+\ldots+A_{7}=8+9+\ldots+15=92.
Pentru a treia interogare, A8+A9++A15=0+1++7=28A_8+A_9+\ldots+A_{15}=0+1+\ldots+7=28.
Pentru a patra interogare, A3+A4++A13=9+14+15+12+13+2+3+0+1+6+7=82A_3+A_4+\ldots+A_{13}=9+14+15+12+13+2+3+0+1+6+7=82.

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