#include <iostream>
#include <algorithm>
using namespace std;
struct record{
int freq;
bool inrec;
record(){
freq=0;
inrec=false;
}
}re[50015];
int ans[20]={0},ansindex=0,N,K;
bool cmp(int a,int b){
if(re[a].freq!=re[b].freq) return re[a].freq>re[b].freq;
else return a<b;
}
void changerecord(int now){
if(re[now].inrec){
re[now].freq++;
sort(ans,ans+ansindex,cmp);
}else if(ansindex<K){
ans[ansindex++]=now;
re[now].inrec=true;
re[now].freq++;
sort(ans,ans+ansindex,cmp);
}else{
re[now].freq++;
if(re[now].freq<re[ans[K-1]].freq) return;
else if(re[now].freq==re[ans[K-1]].freq&&now>ans[K-1]) return;
re[ans[K-1]].inrec=false;
ans[K-1]=now;
re[now].inrec=true;
sort(ans,ans+ansindex,cmp);
}
}
int main(){
int now;
scanf("%d%d%d",&N,&K,&now);
re[now].freq++;
re[now].inrec=true;
if(ansindex<K) ans[ansindex++]=now;
for(int i=1;i<N;i++){
scanf("%d",&now);
printf("%d:",now);
for(int i=0;i<K&&i<ansindex;i++){
if(ans[i]==0) break;
printf(" %d",ans[i]);
}
printf("\n");
changerecord(now);
}
return 0;
}
PAT A1129
最新推荐文章于 2021-01-23 20:21:05 发布