#include <iostream>
#include <cstring>
using namespace std;
bool vis[101000];
int q[1000100], head = 0, tail = 0;
void outputq() {
cout << "q = [";
for(int i = head;i < tail; i++) cout << q[i]<< ", ";
cout << "]\n";
return ;
}
void outputv() {
cout << "vis = [";
for(int i = 0;i < 10; i++) cout << (int)vis[i]<< ", ";
cout << "]\n";
return ;
}
int main() {
memset(vis, false, sizeof(vis));
memset(q, -1,sizeof(q));
int M, N, fi = 0;
cin>>M>>N;
for (int i = 0; i < N; i++) {
int tmp;
cin>> tmp;
if (vis[tmp-1]) continue;
if(tail - head !=M) q[tail++]= tmp, vis[tmp - 1]=true, fi++;
else vis[q[head++]] = false, q[tail++]= tmp, fi++;
}
cout << fi;
return 0;
}
结果