반응형

www.acmicpc.net/problem/1202

 

1202번: 보석 도둑

첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci

www.acmicpc.net

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <algorithm>
#include <queue>
#define ll long long
#define rep(i,n) for(ll i=0;i<n;i++)
#define pii pair<ll, ll>
using namespace std;
ll n, k, idx, ans;
pii arr[300001];
ll bag[300001];
priority_queue<ll> q;
int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cin >> n >> k;
    rep(i,n)
        cin >> arr[i].first >> arr[i].second;
    
    rep(i,k)
        cin >> bag[i];
 
    sort(arr, arr + n);
    sort(bag, bag + k);
 
    idx = 0;
    ans = 0;
    rep(i, k) {
        while (idx < n && arr[idx].first <= bag[i])
            q.push(arr[idx++].second);
        if (!q.empty()) {
            ans += q.top();
            q.pop();
 
        }
    }
    cout << ans;
}
cs
반응형

'백준 > 그리디' 카테고리의 다른 글

백준 4375  (0) 2021.02.12
백준 11000  (0) 2021.02.05
백준 16953  (0) 2021.02.05
백준 2847  (0) 2021.02.05
백준 1439  (0) 2021.02.05

+ Recent posts