Perm

Time limit: 0.75s Memory limit: 256MB Input: perm.in Output: perm.out

Se dă o permutare P[1],,P[N]P[1], \dots , P[N] de NN numere. Un ciclu al permutării este un șir i1,,ik{1,,N}i_1, \dots, i_k \in \{1, \dots, N \} astfel încât i2=P[i1]i_2 = P[i_1], i3=P[i2]i_3 = P[i_2], \dots, ik=P[ik1]i_k = P [i_{k - 1}], i1=P[ik]i_1 = P [i_k]. Un interval [x,y][x, y] este bun dacă există un ciclu i1,,iyx+1i_1, \dots, i_{y-x+1} astfel încât fiecare număr x,x+1,,yx, x + 1, \dots , y să apară exact o dată în i1,,iyx+1i_1, \dots , i_{y-x+1}.

O interogare constă din două valori xx și yy, cu 1xyN1 ≤ x ≤ y ≤ N. Răspunsul este numărul minim de interschimbări ce trebuie aplicate asupra permutării inițiale astfel încât intervalul [x,y][x, y] să devină bun. O interschimbare constă în a selecta două poziții ii și jj și a schimba valorile P[i]P [i] și P[j]P [j] între ele.

Atenție! Interogările sunt independente; adică, interschimbările aplicate pentru o interogare nu sunt păstrate la interogările ce urmează. Mai mult, pentru interogarea [x,y][x, y] este voie să interschimbăm elemente din intervalul [x,y][x, y] cu elemente din afara intervalului [x,y][x, y].

Cerință

Să se afișeze răspunsul pentru QQ interogări.

Date de intrare

Fișierul de intrare perm.in conține pe prima linie două numere NN și QQ.

Pe a doua linie se vor afla NN valori reprezentând, în ordine, valorile P[1],P[2],,P[N]P [1], P [2], \dots, P [N ].

Pe următoarele QQ linii se vor afla câte două numere xx, yy separate printr-un spațiu, reprezentând câte o întrebare.

Date de ieșire

Fișierul de ieșire perm.out trebuie să conțină QQ linii, pe fiecare răspunsul pentru câte o interogare.

Restricții și precizări

  • 1N,Q300 0001 \leq N, Q \leq 300 \ 000
  • 1xyN1 \leq x \leq y \leq N
# Punctaj Restricții
1 2 P[i]=iP[i] = i
2 11 Q=1Q = 1
3 9 N,Q7N, Q \leq 7
4 18 x=1x = 1
5 40 N,Q100 000N, Q \leq 100 \ 000
6 20 Fără restricții suplimentare

Exemplu

perm.in

5 3
4 1 2 3 5
2 4
1 4
1 5

perm.out

1
0
1

Explicație

  • Pentru a transforma intervalul [2,4][2, 4] într-un interval bun, este suficient să facem o singură interschimbare între poziția 11 și poziția 22.
  • Intervalul [1,4][1, 4] este deja bun, deci nu avem nevoie de nicio interschimbare.
  • Pentru ultimul interval, avem nevoie de o singură interschimbare între poziția 11 și poziția 55.

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