flip01

Time limit: 0.15s Memory limit: 32MB Input: flip.in Output: flip.out

Cerință

O operație de tipul flip pe un șir a1,a2,,aNa_1, a_2, \dots, a_N, format doar din cifrele 00 si 11, se realizează prin efectuarea următorilor doi pași:

  • Pasul 1: Se vor alege două numere naturale ll, rr, astfel încât 1lrN1 \leq l \leq r \leq N
  • Pasul 2: Pentru fiecare poziție ii din intervalul [l,r][l, r], dacă aia_i este 00, își va schimba valoarea în 11, altfel își va schimba valoarea în 00. (din 00 în 11 și din 11 în 00).

Se dau NN, șirul a1,a2,,aNa_1, a_2, \dots, a_N și QQ interogări de forma [st,dr][st, dr]:

Pentru fiecare interogare dată, trebuie sa aflați numărul minim de operații flip pe care trebuie să le facem, plecând de la șirul inițial, astfel încât pentru fiecare poziție ii din intervalul [st,dr][st, dr], aia_i este egal cu 00.

Rezolvați această problemă și vă rasplătim cu 100100 de puncte! (sau, cu cât puteți...).

Operațiile efectuate la fiecare interogare NU se păstrează pentru interogările următoare (cu alte cuvinte, toate interogările pleacă de la șirul inițial).

Date de intrare

Pe prima linie a fișierului de intrare flip.in se va afla numărul NN, reprezentând lungimea șirului, iar pe a doua linie șirul a1a_1, a2a_2, ..., aNa_N. Pe a treia linie a fișierului se va afla numărul QQ, reprezentând numărul de interogări. Pe următoarele QQ linii se vor afla două numere stst și drdr, care reprezintă capetele intervalului pentru care vrem să aflăm răspunsul la întrebarea din enunț.

Date de ieșire

Fișierul de ieșire flip.out va conține răspunsurile la cele QQ interogări pe linii separate, în ordinea în care au fost date.

Restricții și precizări

  • 1N,Q2×1051 \leq N, Q \leq 2 \times 10^5
  • ai={0,1}a_i = \{ 0, 1 \}
  • Pentru fiecare interogare, 1stdrN1 \leq st \leq dr \leq N
# Punctaj Restricții
1 9 a1=a2=a3=...=an1=ana_{1}=a_{2}=a_{3}=...=a_{n-1}=a_{n}
2 7 Pentru fiecare pozitie ii, 1i<N1 \le i < N, aiai+1a_i \neq a_{i+1}
3 23 1N,Q2001 \leq N, Q \leq 200
4 21 200<N,Q2000200<N, Q \leq 2 000
5 40 2000<N,Q2×1052000<N, Q \leq 2 \times 10^5

Exemplul 1

flip.in

5
0 1 0 1 1
3
4 5
4 4
1 4

flip.out

1
1
2

Explicație

Pentru cea de-a treia interogare, va trebui să folosim operația flip pentru intervalele [2,2][2, 2] respectiv [4,4][4, 4].

Exemplul 2

flip.in

1
1
1 
1 1

flip.out

1

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