๐ ์ต์ ํ
https://www.acmicpc.net/problem/1927
๐ ๋ฌธ์ ์์ฝ
๋๋ฆฌ ์ ์๋ ค์ง ์๋ฃ๊ตฌ์กฐ ์ค ์ต์ ํ์ด ์๋ค. ์ต์ ํ์ ์ด์ฉํ์ฌ ๋ค์๊ณผ ๊ฐ์ ์ฐ์ฐ์ ์ง์ํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๋ฐฐ์ด์ ์์ฐ์ x๋ฅผ ๋ฃ๋๋ค.
๋ฐฐ์ด์์ ๊ฐ์ฅ ์์ ๊ฐ์ ์ถ๋ ฅํ๊ณ , ๊ทธ ๊ฐ์ ๋ฐฐ์ด์์ ์ ๊ฑฐํ๋ค.
ํ๋ก๊ทธ๋จ์ ์ฒ์์ ๋น์ด์๋ ๋ฐฐ์ด์์ ์์ํ๊ฒ ๋๋ค์ ๋ ฅ: ์ฒซ์งธ ์ค์ ์ฐ์ฐ์ ๊ฐ์ N(1 โค N โค 100,000)์ด ์ฃผ์ด์ง๋ค. ๋ค์ N๊ฐ์ ์ค์๋ ์ฐ์ฐ์ ๋ํ ์ ๋ณด๋ฅผ ๋ํ๋ด๋ ์ ์ x๊ฐ ์ฃผ์ด์ง๋ค. ๋ง์ฝ x๊ฐ ์์ฐ์๋ผ๋ฉด ๋ฐฐ์ด์ x๋ผ๋ ๊ฐ์ ๋ฃ๋(์ถ๊ฐํ๋) ์ฐ์ฐ์ด๊ณ , x๊ฐ 0์ด๋ผ๋ฉด ๋ฐฐ์ด์์ ๊ฐ์ฅ ์์ ๊ฐ์ ์ถ๋ ฅํ๊ณ ๊ทธ ๊ฐ์ ๋ฐฐ์ด์์ ์ ๊ฑฐํ๋ ๊ฒฝ์ฐ์ด๋ค. x๋ 231๋ณด๋ค ์์ ์์ฐ์ ๋๋ 0์ด๊ณ , ์์ ์ ์๋ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง์ง ์๋๋ค.
์ถ๋ ฅ: ์ ๋ ฅ์์ 0์ด ์ฃผ์ด์ง ํ์๋งํผ ๋ต์ ์ถ๋ ฅํ๋ค. ๋ง์ฝ ๋ฐฐ์ด์ด ๋น์ด ์๋ ๊ฒฝ์ฐ์ธ๋ฐ ๊ฐ์ฅ ์์ ๊ฐ์ ์ถ๋ ฅํ๋ผ๊ณ ํ ๊ฒฝ์ฐ์๋ 0์ ์ถ๋ ฅํ๋ฉด ๋๋ค.
๐ก ์ ๊ทผ ๋ฐฉ๋ฒ
c++ STL ์ปจํ
์ด๋ ์ค priority_queue ๋ฅผ ์ฌ์ฉํ์ฌ ์ต์๊ฐ์ด ์ต์์ ๊ฐ์ด ๋๋๋ก ์์๋ฅผ ์ ์งํ๋๋ก ํ์ฌ ๋ฌธ์ ๋ฅผ ํ์ด๋๊ฐ๋ค.
priority_queue๋ ํ๊ตฌ์กฐ๋ฅผ ๋ด๋ถ์ ๊ฐ์ง๋ queue์ธ๋ฐ
์์ธํ ๋ด์ฉ์ ์ดํ์ ์ ๋ฆฌ๋ฅผ ํด๋ด์ผ ํ ๊ฒ ๊ฐ๋ค.
โ ๏ธ ์ฒ์์ ํ๋ ์ค์
๐ป ์ฝ๋
#include <iostream>
#include <queue>
#include <functional>
using namespace std;
int N;
priority_queue<int, vector<int>, greater<int>> heap;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> N;
for(int i = 0; i < N; ++i)
{
int input;
cin >> input;
if(input == 0)
{
if(heap.size() == 0)
cout << "0" << '\n';
else
{
cout << heap.top() << '\n';
heap.pop();
}
}
else
{
heap.push(input);
}
}
return 0;
}