30分求助
查看原帖
30分求助
726139
残阳如血楼主2023/7/5 19:57
#include <iostream>
#include <cstring>
using namespace std;
bool vis[101000];
int q[1000100], head = 0, tail = 0;
void outputq() {
	cout << "q = [";
	for(int i = head;i < tail; i++) cout << q[i]<< ", ";
	cout << "]\n";
	return ;
}
void outputv() {
	cout << "vis = [";
	for(int i = 0;i < 10; i++) cout << (int)vis[i]<< ", ";
	cout << "]\n";
	return ;
}
int main() {
	memset(vis, false, sizeof(vis));
	memset(q, -1,sizeof(q));
	int M, N, fi = 0;
	cin>>M>>N;
	for (int i = 0; i < N; i++) {
		//outputq();
		int tmp;
		cin>> tmp;
		if (vis[tmp-1]) continue;
		if(tail - head !=M) q[tail++]= tmp, vis[tmp - 1]=true, fi++;
		else vis[q[head++]] = false, q[tail++]= tmp, fi++;
	}
	cout << fi;
	return 0;
}

结果

2023/7/5 19:57
加载中...