priority_queue의 디폴트는 max heap이므로
min heap으로 바꾸려면 priority_queue<int, vector<int>, greater<int> > minH; 선언해주기
#include<iostream>
#include<cstring>
#include<queue>
#define MOD 20171109
using namespace std;
int main(void)
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int test_case;
int T;
cin >> T;
for (test_case = 1; test_case <= T; ++test_case)
{
int N, A;
priority_queue<int> maxH;
priority_queue<int, vector<int>, greater<int> > minH;
long long sum = 0;
cin >> N >> A;
maxH.push(A);
for (int i = 0; i < N; i++) {
int a, b;
cin >> a >> b;
int num = maxH.top();
maxH.pop();
if (num < a) minH.push(a);
else maxH.push(a);
if (num < b) minH.push(b);
else maxH.push(b);
if (minH.size() > maxH.size()) {
maxH.push(minH.top());
minH.pop();
}
if (minH.size() == maxH.size()) maxH.push(num);
else minH.push(num);
sum = (sum + maxH.top()) % MOD;
}
cout << "#" << test_case << " " << sum << "\n";
while (!minH.empty()) minH.pop();
while (!maxH.empty()) maxH.pop();
}
return 0;
}
'Algorithm > SWEA' 카테고리의 다른 글
[SWEA] 3304 최장 공통 부분 수열 (0) | 2022.02.07 |
---|---|
[SWEA] 1767. 프로세서 연결하기 (0) | 2022.02.01 |
[SWEA] 1868. 파핑파핑 지뢰찾기 (0) | 2022.01.31 |
[SWEA] 1251. 하나로 (0) | 2022.01.28 |
[SWEA] 1249. 보급로 (0) | 2022.01.28 |