vmem

Se considera un calculator ce are o memorie RAM cu o capacitate de K pagini de memorie si un proces ce se afla in executie pe acest calculator. Se stie ca orice proces are un spatiu de adrese in memoria virtuala, care are, de obicei, o dimensiune mai mare decat memoria RAM. Se cunosc cele N pagini de memorie virtuala accesate de proces, in ordinea in care ele sunt accesate. De fiecare data cand procesul acceseaza o pagina avand un numar X, sistemul de operare verifica daca pagina respectiva se afla in memoria RAM. Daca sistemul de operare gaseste pagina in memoria RAM, pagina poate fi accesata imediat de catre proces. Daca pagina X nu se afla in RAM, atunci ea trebuie adusa de pe disc intr-una dintre cele K locatii din memoria RAM, aceasta operatie fiind foarte costisitoare din punct de vedere al timpului de executie. In cazul in care exista deja K pagini de memorie virtuala in memoria RAM, una dintre aceste pagini trebuie scrisa pe disc si eliminata din memorie, pentru a aduce in locul ei pagina X accesata.
Cunoscand dimensiunea memoriei RAM, numarul de pagini de memorie accesate de procesul aflat in executie, precum si numerele paginilor respective (in ordinea in care acestea sunt accesate), determinati numarul minim de operatii de aducere a unei pagini de pe disc in memoria RAM. In mod evident, acest numar depinde foarte mult de paginile alese pentru a fi eliminate din memoria RAM, atunci cand apare aceasta situatie. Initial, se considera ca memoria RAM nu contine nici o pagina de memorie virtuala.

Date de intare

Pe prima linie a fisierului vmem.in se afla numerele intregi N si K, separate printr-un spatiu. Pe urmatoarea linie se afla N numere intregi, reprezentand numerele paginilor de memorie accesate de catre proces. Paginile sunt date in ordinea in care sunt accesate.

Date de iesire

In fisierul de iesire vmem.out veti afisa o singura linie pe care va fi scris numarul minim necesar de operatii de aducere a unei pagini de memorie de pe disc in memoria RAM.

Restrictii si precizari

1 <= N <= 100 000
1 <= K <= N
Numerele paginilor sunt numere intregi din intervalul [1,100 000 000].

Exemplu

vmem.in vmem.out

4 2
5 3 9 5

3

Timp maxim de executie/test: 0.25 secunde

As.drd.ing. Mugurel Ionut Andreica
Universitatea Politehnica Bucuresti, Facultatea de Automatica si Calculatoare
mugurel_ionut@yahoo.com