本地样例通过,提交全MLE求助
查看原帖
本地样例通过,提交全MLE求助
794083
Z3k7223ios::sync楼主2024/1/12 19:32

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;
}
2024/1/12 19:32
加载中...