link

#include <iostream>
#include <vector>
#include <set>
# define LL long long
using namespace std;
struct Node{
int key;
int freq;
Node(int k, int f):key{k},freq{f}{}
bool operator< (const Node& t) const {
return (freq==t.freq)?key<t.key: freq>t.freq;
}
};
int main(){
int N,K;
cin>>N>>K;
vector<int> arr(N);
for(int i=0;i<N;i++){
cin>>arr[i];
}
vector<int> freq(N+1,0);
set<Node> s;
freq[arr[0]]=1;
s.insert(Node(arr[0],1));
for(int i=1;i<N;i++){
printf("%d:", arr[i]);
int cnt=0;
for(auto it=s.begin();it!=s.end();++it){
printf(" %d",it->key);
cnt++;
if(cnt==K) break;
}
printf("
");
if(freq[arr[i]]==0){
freq[arr[i]]=1;
s.insert(Node(arr[i],1));
}else{
s.erase(Node(arr[i],freq[arr[i]]));
freq[arr[i]]++;
s.insert(Node(arr[i],freq[arr[i]]));
}
}
return 0;
}