题目
思路
水题
代码
#include <iostream>
#include <set>
using namespace std;
const int nmax = 50010;
struct info {
int cnt, val;
bool operator < (const info& a) const{
return cnt != a.cnt ? cnt > a.cnt : val < a.val;
}
};
set<info> s;
int visited[nmax] = { 0 };
int main()
{
int n, m;
cin >> n >> m;
for (int i = 0; i < n; ++i) {
int _index;
cin >> _index;
int count = 0;
if (i != 0) {
cout << _index << ": ";
for (auto& p : s) {
if (count == m)
break;
count == 0 ? cout << p.val : cout << " " << p.val;
count++;
}
cout << endl;
}
auto p = s.find(info{ visited[_index],_index });
if (p != s.end()) {
s.erase(p);
}
visited[_index]++;
s.insert(info{ visited[_index],_index });
}
return 0;
}