https://www.luogu.org/problem/P1540
#include <iostream>
#include <set>
#include <string.h>
using namespace std;
int inputM[1001];
int inputN[1001];
set<int> mList;
int m = 0;
int n = 0;
int iIndex = 0;
int iRet = 0;
bool findX(int x)
{
set<int>::iterator iter = mList.find(x);
if(iter == mList.end())
{
return false;
}
return true;
}
int getMemSize()
{
return mList.size();
}
void pushX(int x)
{
inputM[iIndex+mList.size()] = x;
mList.insert(x);
//for(int i = iIndex; i<iIndex+mList.size(); i++)
// cout << inputM[i];
//cout << endl;
}
void pop()
{
mList.erase(inputM[iIndex]);
iIndex++;
}
int main()
{
memset(inputM, 0, sizeof(inputM));
memset(inputN, 0, sizeof(inputN));
cin >> m >> n;
for(int i = 0; i < n; i++)
{
cin >> inputN[i];
}
for(int i = 0; i < n; i++)
{
if(!findX(inputN[i]))
{
iRet++;
if(getMemSize() < m)
{
pushX(inputN[i]);
}
else
{
pop();
pushX(inputN[i]);
}
}
}
cout << iRet << endl;
return 0;
}