teams

Time limit: 1.3s Memory limit: 128MB Input: teams.in Output: teams.out

„Este nevoie de un rând întreg pentru a construi liniștea și de o singură actualizare pentru a o distruge.”

Gigel, un manager de top, este responsabil cu formarea echipelor pentru ONI (Olimpiada Națională de Improvizații).

La concurs participă NN elevi, așezați în rând și indexați de la 11 la NN. Pentru a evalua dinamica echipelor, Gigel a creat un „profil de personalitate” pentru fiecare elev, reprezentat printr-un număr natural stocat în vectorul vv.

Secretul acestui profil constă în faptul că fiecare bit din reprezentarea binară a lui v[i]v[i] semnifică o anumită preferință sau trăsătură a elevului ii (de exemplu: dacă preferă indexarea vectorilor de la 11 în loc de 00, dacă pune acolada { pe același rând cu if-ul în loc de rândul următor, sau dacă abuzează de #pragma-uri etc.).

Concurenții pot participa fie singuri, fie în echipe de câte 22. Pentru a forma echipele, Gigel alege o subsecvență continuă din rândul de elevi. Apoi, el își imaginează această subsecvență ca pe o bandă flexibilă pe care o pliază exact la jumătate. Elevii care, în urma acestei plieri, ajung să stea față în față (să se suprapună), vor deveni coechipieri. În cazul în care subsecvența selectată are un număr impar de elevi, cel aflat exact pe cuta de pliere nu se va suprapune cu nimeni și va participa singur.

Gigel știe că, într-o echipă de 22, pentru fiecare trăsătură la care cei doi membri au opinii diferite (unul are bitul 11, iar celălalt 00), va apărea o discuție în contradictoriu. Astfel, el deduce că tensiunea unei echipe este exact rezultatul operației sau exclusiv pe biți (\oplus) dintre profilurile celor doi coechipieri. Un elev care participă singur nu are cu cine să se contrazică, deci tensiunea echipei sale este implicit 00 (echivalentul matematic al operației xx=0x \oplus x = 0).

Definim echilibrul unei subsecvențe, notat cu echilibru(i,j)\text{echilibru}(i, j), ca fiind suma tensiunilor tuturor echipelor formate în acea subsecvență.

Cerință

Luându-și foarte în serios rolul de selecționer, Gigel vă cere să rezolvați următoarele două sarcini:

  1. Să calculați suma echilibrelor pentru toate subsecvențele continue posibile din șirul inițial. Mai exact, se cere calcularea valorii:

i=1Nj=iNechilibru(i,j)(mod109+7)\displaystyle \sum_{i=1}^{N} \sum_{j=i}^{N} \text{echilibru}(i, j) \pmod{10^9 + 7}

  1. Să evaluați QQ scenarii de mutări tactice, date sub forma (poz,val)(poz, val): „Dacă l-aș scoate temporar din lot pe elevul de pe poziția pozpoz și l-aș înlocui cu o rezervă având profilul de personalitate egal cu valval, care ar fi noua sumă totală a echilibrelor modulo 109+710^9 + 7?”.

Notă: Nu vă faceți griji, aceste înlocuiri sunt doar simulări pe foaie. După fiecare interogare, elevul original își recapătă locul, iar șirul revine la starea inițială.

Date de intrare

Fișierul de intrare teams.in conține pe prima linie numerele naturale NN și QQ, reprezentând numărul total de elevi și numărul de scenarii pe care trebuie să le rezolvăm. Pe cea de-a doua linie se găsesc NN numere naturale, separate prin câte un spațiu, reprezentând profilurile de personalitate ale elevilor (elementele vectorului vv). Pe fiecare dintre următoarele QQ linii este descris câte un scenariu, exact ca mai sus.

Date de ieșire

Fișierul de ieșire teams.out va conține pe prima linie un singur număr natural, reprezentând suma echilibrelor pentru toate subsecvențele continue posibile din rândul elevilor, calculată modulo 109+710^9 + 7. Fiecare dintre următoarele QQ linii va conține răspunsul modulo 109+710^9 + 7 la fiecare scenariu în parte, în ordinea în care acestea au fost citite.

Restricții și precizări

  • 1N100 0001 \leq N \leq 100 \ 000
  • 0Q100 0000 \leq Q \leq 100 \ 000
  • 0v[i]<2310 \leq v[i] < 2^{31}
  • 1pozN1 \leq poz \leq N
  • 0val<2310 \leq val < 2^{31}
  • Restricțiile asupra lui v[i]v[i] sunt valabile pentru orice 1iN1 \leq i \leq N.
  • Notă: Operația sau-exclusiv (XOR) pe biți este reprezentată în C/C++ prin operatorul ^.
# Punctaj Restricții
1 9 N300N \leq 300 și Q=0Q = 0
2 10 N3 000N \leq 3 \ 000 și Q=0Q = 0
3 18 v[i]{0,1}v[i] \in \{0, 1\} și Q=0Q = 0
4 6 Q=0Q = 0
5 8 N3 000N \leq 3 \ 000 și NQ30 000 000N \cdot Q \leq 30 \ 000 \ 000
6 13 Atât inițial, cât și după orice scenariu, există cel mult 22 elemente nenule în șir.
7 14 poz{1,N}poz \in \{1, N\} pentru toate scenariile
8 22 Fără restricții suplimentare

Exemplul 1

teams.in

4 0
1 2 1 3

teams.out

14

Explicație

În primul exemplu, dacă am alege întregul șir, atunci coechipieri ar fi elevii aflați pe pozițiile (1,4)(1, 4) și (2,3)(2, 3). Așadar, echilibrul subsecvenței (1,4)(1, 4) este (13)+(21)=2+3=5(1 \oplus 3) + (2 \oplus 1) = 2 + 3 = 5. Pentru celelalte subsecvențe se procedează similar, echilibrele fiind, în ordinea lexicografică a capetelor: 00, 33, 00, 55, 00, 33, 11, 00, 22, 00. Observăm că suma lor este exact 1414.

Exemplul 2

teams.in

10 7
45 12 107 88 3 56 120 77 21 99
3 64
1 8
10 127
5 0
7 56
1 45
8 33

teams.out

6623
6508
6580
6603
6584
6495
6623
6555

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