반응형
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 |
반응형