1129. Recommendation System (25)

来源:互联网 发布:js精确到小数点后两位 编辑:程序博客网 时间:2024/05/16 17:43

感想:水题,每添加一个数字就计算一次是否会进入输出数组即可

#include<iostream>#include<vector>#include<map>#include<deque>#include<cstdio>#include<string>#include<cstring>#include<algorithm>using namespace std;int a[60000];struct n{int node;int time;}b[20];void add(int num,int K){//cout<<num<<": ";a[num]++;int i,j;for(i=0;i<K;i++){if(b[i].node==num){int t=i;while((b[t].time<a[num]||(b[t].node>num&&b[t].time==a[num]))&&t>=0)t--;for(j=i;j>=t+1;j--){b[j]=b[j-1];}b[t+1].node=num;b[t+1].time=a[num];return ;}}int t=K-1;if((b[K-1].time==a[num]&&num<b[K-1].node)||b[K-1].time<a[num]){while((b[t].time<a[num]||(b[t].node>num&&b[t].time==a[num]))&&t>=0)t--;for(j=K-1;j>=t+1;j--){b[j]=b[j-1];}b[t+1].node=num;b[t+1].time=a[num];}}int main(){int N,i,K,j,s;cin>>N>>K;for(i=0;i<N;i++){cin>>j;if(i!=0){cout<<j<<": ";for(s=0;s<K;s++){if(b[s].node!=0){if(s!=0)cout<<" ";cout<<b[s].node;}}cout<<endl;}add(j,K);}} 

0 1