Recommendation system predicts the preference that a user would give to an item. Now you are asked to program a very simple recommendation system that rates the user's preference by the number of times that an item has been accessed by this user.

Input Specification:

Each input file contains one test case. For each test case, the first line contains two positive integers: N (≤ 50,000), the total number of queries, and K (≤ 10), the maximum number of recommendations the system must show to the user. Then given in the second line are the indices of items that the user is accessing -- for the sake of simplicity, all the items are indexed from 1 to N. All the numbers in a line are separated by a space.

Output Specification:

For each case, process the queries one by one. Output the recommendations for each query in a line in the format:

query: rec[1] rec[2] ... rec[K]

where query is the item that the user is accessing, and rec[i] (i=1, ... K) is the i-th item that the system recommends to the user. The first K items that have been accessed most frequently are supposed to be recommended in non-increasing order of their frequencies. If there is a tie, the items will be ordered by their indices in increasing order.

Note: there is no output for the first item since it is impossible to give any recommendation at the time. It is guaranteed to have the output for at least one query.

Sample Input:

12 3
3 5 7 5 5 3 2 1 8 3 8 12

Sample Output:

5: 3
7: 3 5
5: 3 5 7
5: 5 3 7
3: 5 3 7
2: 5 3 7
1: 5 3 2
8: 5 3 1
3: 5 3 1
8: 3 5 1
12: 3 5 8
#include<iostream>
#include<set>
using namespace std;
struct node{
int value,cnt;
bool operator< (const node &a) const{
return (cnt != a.cnt) ? cnt > a.cnt : value < a.value;
}
};
int book[]; int main(){
int n,m,num;
scanf("%d%d",&n,&m);
set<node> s;
for(int i = ; i < n; i++){
scanf("%d",&num);
if(i != ){
printf("%d:",num);
int tempCnt = ;
for(auto it = s.begin(); tempCnt < m && it != s.end();it++){
printf(" %d",it->value);
tempCnt++;
}
printf("\n");
}
auto it = s.find(node{num,book[num]});
if(it != s.end()) s.erase(it);
book[num]++;
s.insert(node{num,book[num]});
}
return ;
}

最新文章

  1. 让那些为Webkit优化的网站也能适配IE10
  2. [Head First设计模式]山西面馆中的设计模式——装饰者模式
  3. [moka同学笔记]MySql语句整理
  4. js之如何获取css样式
  5. Unity减少GC Alloc之 使用for替换foreach
  6. IOS之UI--小实例项目--添加商品和商品名(纯代码终结版)
  7. HTML常见标签总结
  8. SQL Server 错误:15023(创建对于用户失败)
  9. dbo与db_owner区别
  10. SQL Server 索引结构及其使用(一)
  11. MVC3 Razor @RenderSection
  12. 23(java/io/data_io)
  13. ArrayList 遍历
  14. Java网络连接之HttpURLConnection、HttpsURLConnection
  15. ETL作业调度软件TASKCTL4.1单机部署
  16. Quartz格式设置说明
  17. 使用snap
  18. JAVAEE第四周
  19. 【emWin】例程二十八:窗口对象——Menu
  20. [elastic search][redis] 初试 ElasticSearch / redis

热门文章

  1. 22.NULL 值
  2. wordpress中add_action和add_filter
  3. [redis]redis-cluster的使用
  4. Quartus II 14.0正式版 下载链接和破解器
  5. ColorMatrixFilter色彩矩阵滤镜;
  6. 挂载ISO 和 KILL 掉占用进程
  7. [.net 多线程]volatile 摘录
  8. 移植 libevent-2.0.22-stable 到ARM平台
  9. Flask写web时cookie的处理
  10. c++迭代递归实现汉诺塔(5种迭代方法满足你)