想用n=10000,1≤m≤100的数据做测试,但程序崩了,希望各位大佬帮忙看看。 生成数据代码(python):
s=open("D:\\111.txt",'w')
import random
s.write(str(random.randint(1,100))+'\n'+"10000\n")
for i in range(10000):
s.write(str(random.randint(1,100))+'\n')
s.close()
c++运行代码:
#include <bits/stdc++.h>
using namespace std;
queue<int> q;
set<int> s;
int main(){
freopen("C:\\111.txt","r",stdin);
int m,n,c=0,sum=0;
scanf("%d%d",&m,&n);
for(int i=1;i<=n;i++){
int k;
scanf("%d",&k);
if(s.find(k)!=s.end()){
continue;
}
sum++;
if(c>=m){
int v=q.front();
q.pop();
s.erase(s.find(v));
q.push(k);
s.insert(k);
}
else{
q.push(k);
c++;
s.insert(k);
}
}
printf("%d",sum);
return 0;
}