思路

模拟题, 用一个set 和一个队列来完成这件事就行

ac 代码

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
 
int main()
{
    set<int> vis ;
    queue<int> mem;
    int n , s ; 
    cin >> s >> n;
    int cnt = 0 ;
    for(int i = 0 ; i<n;i++)
    {
        int x ;
        cin >> x;
        if (vis.count(x)) continue;
        else{ 
            cnt ++ ;
            vis.insert(x);
            mem.push(x);
            if (mem.size()>s) 
            {
                int t = mem.front();
                vis.erase(t);
                mem.pop();
            }
        }
    }
    cout << cnt;
    return 0;
}