https://www.acmicpc.net/problem/1966
우선순위 큐가 있는지 모르고 vector로 sort돌려서 우선순위를 따로 체크했는데
그냥 우선순위 큐를 쓰면 더 편하게 풀 수 있을 것 같다.
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;
struct MyStruct
{
int num;
int prior;
};
void solve(int n, int w) {
queue<MyStruct>q;
vector<int>v;
int num = 1;
int vnum = 0;
for (int i = 0; i < n; i++) {
int temp;
cin >> temp;
q.push({i, temp});
v.push_back(temp);
}
sort(v.rbegin(), v.rend());
while (!q.empty()) {
if (q.front().prior >= v[vnum]) {
if (q.front().num == w) {
cout << num << '\n';
return;
}
q.pop();
vnum++;
num++;
}
else {
q.push(q.front());
q.pop();
}
}
cout << "error" << '\n';
}
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
int ndocument, wdocument;
cin >> ndocument >> wdocument;
solve(ndocument, wdocument);
}
return 0;
}
'개발공부 > 백준풀이' 카테고리의 다른 글
백준 1764 c++ (1) | 2024.12.03 |
---|---|
백준 2606 그래프문제 C++ (0) | 2024.12.01 |
1026 C++ 그리디 (0) | 2024.11.26 |
11723 백준 c++ (0) | 2024.11.20 |
백준 1991 C++ 트리순회 문제(전위,중위,후방)순회 (0) | 2024.11.13 |