풀이
짜라는대로 짜면 된다.
코드
#include <cstdio>
#include <deque>
#include <algorithm>
using namespace std;
int n, m;
struct abc {
int idx, vote, time;
bool operator <(abc a)const {
if (vote == a.vote) return time < a.time;
return vote < a.vote;
}
};
int main() {
deque<abc> d;
scanf("%d %d", &m, &n);
for (int i = 1; i <= n; i++) {
int x;
scanf("%d", &x);
for (abc &it : d) if (it.idx == x) it.vote++, x = -1;
if (x == -1) continue;
sort(d.begin(), d.end());
if (d.size() >= m) d.pop_front();
d.push_back({ x,1,i });
}
sort(d.begin(), d.end(), [](abc i, abc j){return i.idx<j.idx;});
for (auto it : d) {
printf("%d ", it.idx);
}
return 0;
}
아무말
백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이