https://www.acmicpc.net/problem/11286
๋ฌธ์
์ ๋๊ฐ ํ์ ๋ค์๊ณผ ๊ฐ์ ์ฐ์ฐ์ ์ง์ํ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
- ๋ฐฐ์ด์ ์ ์ x (x ≠ 0)๋ฅผ ๋ฃ๋๋ค.
- ๋ฐฐ์ด์์ ์ ๋๊ฐ์ด ๊ฐ์ฅ ์์ ๊ฐ์ ์ถ๋ ฅํ๊ณ , ๊ทธ ๊ฐ์ ๋ฐฐ์ด์์ ์ ๊ฑฐํ๋ค. ์ ๋๊ฐ์ด ๊ฐ์ฅ ์์ ๊ฐ์ด ์ฌ๋ฌ๊ฐ์ผ ๋๋, ๊ฐ์ฅ ์์ ์๋ฅผ ์ถ๋ ฅํ๊ณ , ๊ทธ ๊ฐ์ ๋ฐฐ์ด์์ ์ ๊ฑฐํ๋ค.
ํ๋ก๊ทธ๋จ์ ์ฒ์์ ๋น์ด์๋ ๋ฐฐ์ด์์ ์์ํ๊ฒ ๋๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ฐ์ฐ์ ๊ฐ์ N(1≤N≤100,000)์ด ์ฃผ์ด์ง๋ค. ๋ค์ N๊ฐ์ ์ค์๋ ์ฐ์ฐ์ ๋ํ ์ ๋ณด๋ฅผ ๋ํ๋ด๋ ์ ์ x๊ฐ ์ฃผ์ด์ง๋ค. ๋ง์ฝ x๊ฐ 0์ด ์๋๋ผ๋ฉด ๋ฐฐ์ด์ x๋ผ๋ ๊ฐ์ ๋ฃ๋(์ถ๊ฐํ๋) ์ฐ์ฐ์ด๊ณ , x๊ฐ 0์ด๋ผ๋ฉด ๋ฐฐ์ด์์ ์ ๋๊ฐ์ด ๊ฐ์ฅ ์์ ๊ฐ์ ์ถ๋ ฅํ๊ณ ๊ทธ ๊ฐ์ ๋ฐฐ์ด์์ ์ ๊ฑฐํ๋ ๊ฒฝ์ฐ์ด๋ค. ์ ๋ ฅ๋๋ ์ ์๋ -231๋ณด๋ค ํฌ๊ณ , 231๋ณด๋ค ์๋ค.
์ถ๋ ฅ
์ ๋ ฅ์์ 0์ด ์ฃผ์ด์ง ํ์๋งํผ ๋ต์ ์ถ๋ ฅํ๋ค. ๋ง์ฝ ๋ฐฐ์ด์ด ๋น์ด ์๋ ๊ฒฝ์ฐ์ธ๋ฐ ์ ๋๊ฐ์ด ๊ฐ์ฅ ์์ ๊ฐ์ ์ถ๋ ฅํ๋ผ๊ณ ํ ๊ฒฝ์ฐ์๋ 0์ ์ถ๋ ฅํ๋ฉด ๋๋ค.
์ฐ์ ์์ ํ๋ก ํด๊ฒฐํด์ผ ํ๋ ๋ฌธ์ ์ ๋๋ค.
ํ๊ฐ์ง ์ ์ํ ์ ์,
๋์ ํ์ด
#include <iostream>
#include <string>
#include <queue>
#include <vector>
using namespace std;
struct comp{
bool operator()(int a,int b){
// ์๋ ์ฐ์ ์์ํ๋ ๊ฐ์ฅ ํฐ ์๊ฐ top.
// top์ ๊ฐ์ฅ ์์ ์๊ฐ ์์ผํ๋ฏ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
if(abs(a)==abs(b)){
return a > b;
}
else
return abs(a) > abs(b);
}
};
int main(){
priority_queue< int, vector<int>, comp > pq;
int n;
int x;
cin >> n;
for (int i = 0; i < n; ++i){
cin >> x;
if(x == 0){
if(pq.empty()) cout << 0 << '\n';
else {
cout << pq.top() << '\n';
pq.pop();
}
}
else pq.push(x);
}
}
'๐ ์๊ณ ๋ฆฌ์ฆ > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++/BOJ] 1417 : ๊ตญํ์์ ์ ๊ฑฐ (์๋ฃ๊ตฌ์กฐ) (2) | 2023.05.06 |
---|---|
[C++/BOJ] 9012 : ๊ดํธ (์๋ฃ๊ตฌ์กฐ) (1) | 2023.05.06 |
[C++/BOJ] 5430 : AC (์๋ฃ๊ตฌ์กฐ) (0) | 2023.05.02 |
[C++/BOJ] 7576 : ํ ๋งํ (bfs/dfs) (1) | 2023.04.14 |
[C++/BOJ] 1107 : ๋ฆฌ๋ชจ์ปจ (์์ ํ์) (0) | 2023.04.14 |