https://www.acmicpc.net/problem/11286
풀이
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
#include <vector>
#include <queue>
using namespace std;
struct Data
{
int AbsoluteInteger;
int OriginInteger;
Data(int InAbsoluteInteger, int InOriginInteger)
: AbsoluteInteger(InAbsoluteInteger), OriginInteger(InOriginInteger){};
bool operator<(const Data& InOther) const
{
if (AbsoluteInteger == InOther.AbsoluteInteger)
{
return OriginInteger > InOther.OriginInteger;
}
else
{
return AbsoluteInteger > InOther.AbsoluteInteger;
}
}
};
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int N{};
cin >> N;
priority_queue<Data> pQ;
int Integer{};
for (int i{}; i < N; ++i)
{
cin >> Integer;
if (Integer)
{
pQ.push(Data(abs(Integer), Integer));
}
else
{
if (pQ.empty())
{
cout << 0 << '\n';
}
else
{
cout << pQ.top().OriginInteger << '\n';
pQ.pop();
}
}
}
return 0;
}