1일1알

백준 22252번 정보 상인 호석 C++ 본문

알고리즘

백준 22252번 정보 상인 호석 C++

영춘권의달인 2022. 11. 27. 14:21

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

 

22252번: 정보 상인 호석

암흑가의 권력은 주먹과 정보에서 나온다. 주먹은 한 명에게 강하고, 정보는 세계를 가지고 놀 수 있기 때문에 호석이는 세상 모든 정보를 모으는 "정보 상인"이 되고 싶다. 정보 상인은 정보를

www.acmicpc.net

 

map에 key를 고릴라의 이름, value를 정보를 저장하고 있는 우선순위 큐로 넣어서 풀었다.

 

#include <iostream>
#include <string>
#include <vector>
#include <math.h>
#include <algorithm>
#include <utility>
#include <stack>
#include <queue>
#include <math.h>
#include <set>
#include <map>
#include <list>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <limits.h>

using namespace std;
using int64 = long long;

int q;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    cin >> q;
    int64 ans = 0;
    map<string, priority_queue<int>> mp;
    for (int i = 0; i < q; i++) {
        int type;
        string name;
        cin >> type >> name;
        auto it = mp.find(name);
        if (type == 1) {
            int k;
            cin >> k;
            for (int i = 0; i < k; i++) {
                int cost;
                cin >> cost;
                if (it == mp.end()) {
                    priority_queue<int> pq;
                    mp.insert({ name,pq });
                }
                mp[name].push(cost);
            }
        }
        else {
            int b;
            cin >> b;
            if (it != mp.end()) {
                for (int i = 0; i < b; i++) {
                    if (mp[name].empty()) break;
                    int top = mp[name].top();
                    ans += top;
                    mp[name].pop();
                }
            }
        }
    }
    cout << ans;
}