解题思路:主要是及时更新商品频率最高的次数,然后输出推荐的k件商品。
注意格式!
#include<cstdio>
#include<set>
#define N 50005
using namespace std;
int cnt[N];
struct item{
int id,count;
item(int a,int b):id(a),count(b){}
bool operator < (const item &a)const{
if(count != a.count)
return count > a.count;
else return id < a.id;
}
};
int main(){
int n,k,num;
set<item> s;
scanf("%d%d",&n,&k);
for(int i =0; i<n; i++){
scanf("%d",&num);
if(i!=0){
printf("%d:",num);
int tmpk = 0;
set<item>::iterator it;
for(it=s.begin();it != s.end()&&tmpk < k;it++){
printf(" %d",it->id);
tmpk++;
}
printf("\n");
}
if(s.find(item(num,cnt[num])) != s.end()){
s.erase(item(num,cnt[num]));
}
cnt[num]++;
s.insert(item(num,cnt[num]));
}
return 0;
}