7662๋ฒ: ์ด์ค ์ฐ์ ์์ ํ
์ ๋ ฅ ๋ฐ์ดํฐ๋ ํ์ค์ ๋ ฅ์ ์ฌ์ฉํ๋ค. ์ ๋ ฅ์ T๊ฐ์ ํ ์คํธ ๋ฐ์ดํฐ๋ก ๊ตฌ์ฑ๋๋ค. ์ ๋ ฅ์ ์ฒซ ๋ฒ์งธ ์ค์๋ ์ ๋ ฅ ๋ฐ์ดํฐ์ ์๋ฅผ ๋ํ๋ด๋ ์ ์ T๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ํ ์คํธ ๋ฐ์ดํฐ์ ์ฒซ์งธ ์ค์๋ Q์ ์
www.acmicpc.net
โจ ๋ด ์์ค ์ฝ๋
#include<iostream>
#include <set>
using namespace std;
int main(void) {
ios::sync_with_stdio(false);
cin.tie(NULL);
int T, k, n;
char c;
cin >> T;
while (T--) {
multiset <int> pq;
cin >> k;
while (k--) {
cin >> c >> n;
if (c == 'I') {
pq.insert(n);
}
else {
if (pq.empty())continue;
if (n == -1) {
pq.erase(pq.begin());
}
else {
pq.erase(--pq.end());
}
}
}
if (pq.empty()) {
cout << "EMPTY\n";
}
else {
cout << *(--pq.end()) << " " << *pq.begin() << '\n';
}
}
return 0;
}
๐ ๋ฌธ์ ํ์ด
์ ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด์ multiset์ด๋ผ๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ ํํ์๋ค
set์ key(์์)๋ค์ ์งํฉ์ผ๋ก ๊ฐ๋ค์ด ์๋ ์ ๋ ฌ๋๋ค๋ ํน์ง์ด ์๋ค
key๊ฐ์ด๊ธฐ ๋๋ฌธ์ ์ค๋ณต์ด ํ์ฉ๋์ง ์๋๋ค๋ ํน์ง์ด ์์ง๋ง,
multiset์ ๊ฒฝ์ฐ ์ค๋ณต์ ํ์ฉ์์ผ์ฃผ๊ธฐ๋๋ฌธ์, ์ค๋ณต ๊ฐ๋ ํ์ฉ์ด ๋๊ณ ์๋ ์ ๋ ฌ๋ ๋๋ multiset์ ์ฌ์ฉํ๊ฒ ๋ ๊ฒ์ด๋ค
multiset์ ์ด์ฉํ์ฌ ๊ฐ์ ๋ฃ๊ณ , ๋ฌธ์ ์ ์กฐ๊ฑด์ ๋ฐ๋ผ D -1์ด๋ฉด ์ต์๊ฐ์ D 1์ด๋ฉด ์ต๋๊ฐ์ ์ญ์ ํ๋ ๊ณผ์ ์ ๋ฐ๋ณตํ์๋ค
๋ชจ๋ ์์ ์ด ๋๋๊ณ pq๊ฐ ๋น์ด์๋ค๋ฉด 'EMPTY'๋ผ๋ ๋ฌธ์๋ฅผ, ๋น์ด์์ง ์๋ค๋ฉด ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ์ถ๋ ฅํ์๋ค
๐ฑ ์ต๋๊ฐ
pq.erase(--pq.end()); //์ต๋๊ฐ ์ญ์
*(--pq.end()) // ์ต๋๊ฐ
์ต๋๊ฐ์ ๊ตฌํ ๋, ์์ ๊ฐ์ด --pq.end()๋ผ๋ ์์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ์๋๋ฐ
์ด๋ pq.end()๋ฅผ ํ๋ฉด ๋ง์ง๋ง ๋ถ๋ถ์ ๋ํ ์ฃผ์ ๊ฐ ๋ฐํ์ ๋ฐํํ๋ ๊ฒ์ ๋ง์ง๋ง ์ ํํ๋ ๋ง์ง๋ง ๋ค ๊ณต๋ฐฑ๊ตฌ๊ฐ๋ฅผ ๋ฐํํ๊ฒ ๋๋ค
๋ฐ๋ผ์ '--' ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์ด์ ๊ณต๋ฐฑ ์ ์ ๋ง์ง๋ง ๊ฐ์ด ๋ด๊ธด ์ฃผ์๊ฐ์ ๋ฐํํ๋๋ก ํ ๊ฒ์ด๋ค

โญ ๋ฌธ์ ํ์ด ๊ฒฐ๊ณผ
