rt,洛谷ide样例也过不了
#include <bits/stdc++.h>
using namespace std;
const int N = 5e5 + 10;
queue<int> nxt[N];
struct node {
int x;
friend bool operator <(node a, node b) {
return nxt[a.x].front() < nxt[b.x].front();
}
};
priority_queue<node> q;
int n, k, p, a[N];
bool inque[N];
int main() {
ios::sync_with_stdio(0);
cin >> n >> k >> p;
for (int i = 1; i <= p; i++) {
cin >> a[i];
nxt[a[i]].push(i);
}
for (int i = 1; i <= n; i++) {
nxt[i].push(INT_MAX);
}
int ans = 0;
for (int i = 1; i <= p; i++) {
if (inque[a[i]])
continue;
if (q.size() < k) {
inque[a[i]] = 1;
nxt[a[i]].pop();
q.push({a[i]});
ans++;
} else {
int tmp = q.top().x;
q.pop();
inque[tmp] = 0;
inque[a[i]] = 1;
nxt[a[i]].pop();
q.push({a[i]});
ans++;
}
}
cout << ans << endl;
return 0;
}