主要是这里的一些操作可能不太熟悉
重载运算符+删除插入结构体变量这里~
#include<bits/stdc++.h>
using namespace std;
const int maxn=50100;
//重载<运算符
struct node{
int value;
int cnt;
bool operator < (const node &a) const {
return (cnt != a.cnt) ? cnt > a.cnt : value < a.value;
}
};
set<node> s;
int book[maxn]={0};
int main(){
int n,k;
scanf("%d %d",&n,&k);
for(int i=0;i<n;i++){
int x;
scanf("%d",&x);
if(i!=0){
printf("%d:",x);
int tempcnt=0;
for(auto it=s.begin();it!=s.end()&&tempcnt<k;it++){
printf(" %d",it->value);
tempcnt++;
}
printf("\n");
}
//删除插入结构体
auto it=s.find(node{x,book[x]});
if(it!=s.end()) s.erase(it);
book[x]++;
s.insert(node{x,book[x]});
}
return 0;
}