題意:
信息欄顯示問題,信息欄最多顯示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;
}