题意:
信息栏显示问题,信息栏最多显示k个,将依次出现n个信息:
新出现的信息如果不在信息栏中,则将最先在信息栏中的信息删除,后将这条信息加入;
新出现的信息如果在信息栏中,则不做处理。
代码如下:
#include<bits/stdc++.h>
using namespace std;
int a[200010];
int main(){
int n,k,b,l=0,r=0;
set<int>s;
scanf("%d %d",&n,&k);
for(int i=0;i<n;i++){
scanf("%d",&b);
if(!s.count(b)){
if(r-l==k){
s.erase(a[l]);
l++;
}
a[r++]=b;
s.insert(b);
}
}
printf("%d\n",r-l);
for(int i=r-1;i>l;i--){
printf("%d ",a[i]);
}
printf("%d\n",a[l]);
return 0;
}