πŸ’  Cpp/[Solved.ac] Class2~4

[BOJ][C++] λ°±μ€€ 1927번: μ΅œμ†Œ νž™

선달 2023. 4. 11. 23:36
λ°˜μ‘ν˜•

https://www.acmicpc.net/problem/1927

 

1927번: μ΅œμ†Œ νž™

첫째 쀄에 μ—°μ‚°μ˜ 개수 N(1 ≤ N ≤ 100,000)이 주어진닀. λ‹€μŒ N개의 μ€„μ—λŠ” 연산에 λŒ€ν•œ 정보λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ •μˆ˜ xκ°€ 주어진닀. λ§Œμ•½ xκ°€ μžμ—°μˆ˜λΌλ©΄ 배열에 xλΌλŠ” 값을 λ„£λŠ”(μΆ”κ°€ν•˜λŠ”) 연산이고, xκ°€ 0

www.acmicpc.net

 

문제

널리 잘 μ•Œλ €μ§„ 자료ꡬ쑰 쀑 μ΅œμ†Œ νž™μ΄ μžˆλ‹€. μ΅œμ†Œ νž™μ„ μ΄μš©ν•˜μ—¬ λ‹€μŒκ³Ό 같은 연산을 μ§€μ›ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

  1. 배열에 μžμ—°μˆ˜ xλ₯Ό λ„£λŠ”λ‹€.
  2. λ°°μ—΄μ—μ„œ κ°€μž₯ μž‘μ€ 값을 좜λ ₯ν•˜κ³ , κ·Έ 값을 λ°°μ—΄μ—μ„œ μ œκ±°ν•œλ‹€.

ν”„λ‘œκ·Έλž¨μ€ μ²˜μŒμ— λΉ„μ–΄μžˆλŠ” λ°°μ—΄μ—μ„œ μ‹œμž‘ν•˜κ²Œ λœλ‹€.

μž…λ ₯

첫째 쀄에 μ—°μ‚°μ˜ 개수 N(1 ≤ N ≤ 100,000)이 주어진닀. λ‹€μŒ N개의 μ€„μ—λŠ” 연산에 λŒ€ν•œ 정보λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ •μˆ˜ xκ°€ 주어진닀. λ§Œμ•½ xκ°€ μžμ—°μˆ˜λΌλ©΄ 배열에 xλΌλŠ” 값을 λ„£λŠ”(μΆ”κ°€ν•˜λŠ”) 연산이고, xκ°€ 0이라면 λ°°μ—΄μ—μ„œ κ°€μž₯ μž‘μ€ 값을 좜λ ₯ν•˜κ³  κ·Έ 값을 λ°°μ—΄μ—μ„œ μ œκ±°ν•˜λŠ” κ²½μš°μ΄λ‹€. xλŠ” 231보닀 μž‘μ€ μžμ—°μˆ˜ λ˜λŠ” 0이고, 음의 μ •μˆ˜λŠ” μž…λ ₯으둜 주어지지 μ•ŠλŠ”λ‹€.

좜λ ₯

μž…λ ₯μ—μ„œ 0이 주어진 횟수만큼 닡을 좜λ ₯ν•œλ‹€. λ§Œμ•½ 배열이 λΉ„μ–΄ μžˆλŠ” 경우인데 κ°€μž₯ μž‘μ€ 값을 좜λ ₯ν•˜λΌκ³  ν•œ κ²½μš°μ—λŠ” 0을 좜λ ₯ν•˜λ©΄ λœλ‹€.

 

풀이

#include <iostream>
#include <queue>

using namespace std;

int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
    
    priority_queue<int, vector<int>, greater<int>> q;
    
    int n, x;
    cin >> n;
    while(n--) {
        cin >> x;
        
        if(x==0) {
            if(q.empty()) 
                cout << 0 << "\n";
            else {
                cout << q.top() << "\n";
                q.pop();
            }
        } else {
            q.push(x);
        }
    }
    
    return 0;
}
λ°˜μ‘ν˜•