0
点赞
收藏
分享

微信扫一扫

PAT 1129 Recommendation System (25 分) SET 运算符重载

有点d伤 2022-02-18 阅读 65
c语言
#include <iostream>
#include <set>
using namespace std;
struct node{
    int val,cnt;
    bool operator<(const node&a)const{
        return(cnt!=a.cnt)?cnt>a.cnt:val<a.val;
    }
};
int book[50001];
int main() {
    int n,k,num;
    cin>>n>>k;
    set<node>s;
    for(int i=0;i<n;i++){
        cin>>num;
        if(i!=0){
            printf("%d:",num);
            int tempCnt=0;
            for(auto it=s.begin();tempCnt<k&&it!=s.end();it++){
                printf(" %d",it->val);
                tempCnt++;
            }
            printf("\n");
        }
        auto it=s.find(node{num,book[num]});               //num的次数++
        if(it!=s.end()) s.erase(it);                    //如果set里有记录num,则擦除后++再重新插入
        book[num]++;
        s.insert(node{num,book[num]});
    }
    return 0;
}
举报

相关推荐

0 条评论