#include <bits/stdc++.h>
using namespace std;
/*
特点:先进先出-队列
外存查询条件:队列中无该单词
队列替换条件:队列的容量等于三
*/
int num=0;
queue<int> q;
int M;
set<int> m;

void find(int w)
{
    if(*m.find(w)==w&&m.find(w)!=m.end())//集合不空
        return;
    num+=1;
    if(q.size()<M)
    {    m.insert(w);
         q.push(w);
    }
    else
    {
        int t=q.front();
        q.pop();
        m.erase(t);
        m.insert(w);
        q.push(w);
    }

}

int main()
{
    int N;
    cin>>M>>N;
    int word;
    while(N--)
    {
        cin>>word;
        find(word);
    }
    cout<<num<<endl;
    return 0;
}
  1. STL中容器的使用:find
  2. 注意条件