1129. Recommendation System (25)
#include <iostream>
#include <vector>
#include <unordered_map>
#include <set>
#include <algorithm>
using namespace std;
struct node
{
int idx,w;
node(int x,int y):idx(x),w(y){}
bool operator <(const node &nd)const
{
if(w!=nd.w) return w>nd.w;
return idx<nd.idx;
}
};
int main()
{
int n,k;
unordered_map<int,int> cnt;
set<node> mset;
cin>>n>>k;
for(int i=0;i<n;++i)
{
int idx;
cin>>idx;
if(i>0)
{
cout<<idx<<":";
int s=0;
for(auto it=mset.begin();it!=mset.end()&&s!=k;++it,++s)
cout<<" "<<it->idx;
cout<<endl;
}
auto it=mset.find(node(idx,cnt[idx]));
if(it!=mset.end()) mset.erase(it);
mset.insert(node(idx,++cnt[idx]));
}
return 0;
}