Cerință
O operație de tipul flip pe un șir , format doar din cifrele si , se realizează prin efectuarea următorilor doi pași:
Pasul 1
: Se vor alege două numere naturale , , astfel încâtPasul 2
: Pentru fiecare poziție din intervalul , dacă este , își va schimba valoarea în , altfel își va schimba valoarea în . (din în și din în ).
Se dau , șirul și interogări de forma :
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 din intervalul , este egal cu .
Rezolvați această problemă și vă rasplătim cu 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 , reprezentând lungimea șirului, iar pe a doua linie șirul , , ..., . Pe a treia linie a fișierului se va afla numărul , reprezentând numărul de interogări. Pe următoarele linii se vor afla două numere și , 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 interogări pe linii separate, în ordinea în care au fost date.
Restricții și precizări
- Pentru fiecare interogare,
# | Punctaj | Restricții |
---|---|---|
1 | 9 | |
2 | 7 | Pentru fiecare pozitie , , |
3 | 23 | |
4 | 21 | |
5 | 40 |
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 respectiv .
Exemplul 2
flip.in
1
1
1
1 1
flip.out
1