1129 Recommendation System

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("\n");
        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;
}

 

posted @ 2020-03-19 19:11  feibilun  阅读(110)  评论(0)    收藏  举报