λ¬Έμ μ€λͺ

그리λ μκ³ λ¦¬μ¦μ μ¬μ©ν΄μΌ νλ€. μλλ©΄ 무쑰건 μκ°μ΄κ³Ό λ°μ.
μ κ·Ό λ°©λ²
μμ κ°λ°©λΆν° λ΄μμΌ νλ€. -> κ°λ°©μ μ λ ¬
κ°λ°©μ λ΄μ λ, κ°λ°©μ λ΄μ μ μλ κ²μ€μ κ°μ₯ κ°μΉκ° λμ κ²λΆν° λ΄μμΌ κ·Έλ¦¬λ μκ³ λ¦¬μ¦μ΄λ€.
μ°μ μμ νλ₯Ό μ΄μ©ν νμ΄
cpp#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> pii; #define FOR(i,a,b) for(int i=(a);i<=(b);i++) #define MAX 300001 /* 그리λ μκ³ λ¦¬μ¦μ μ’μ λ¬Έμ κ°λ°©μ μ©λμ΄ μ£Όμ΄μ‘μ λ λ΄μ μ μλ λ¬Όνμ€μ κ°μ₯ κ°μΉκ° λμ λ¬Όνμ λ΄λλ€. */ int N, K; pii jewerly[MAX]; int C[MAX]; priority_queue<int> pq; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin >> N >> K; for (int i=0; i<N; i++){ cin >> jewerly[i].first >> jewerly[i].second; } for (int i=0; i<K; i++){ cin >> C[i]; } // λ¬΄κ² μμΌλ‘ μ λ ¬ sort(jewerly, jewerly+N); sort(C, C+K); int idx = 0; ll sum = 0; // μμ κ°λ°©λΆν° μ΅μ μ κ°μΉλ₯Ό λ£κΈ° for (int i = 0; i < K; i++) { // λ£μ μ μλ κ²λ€ pqμ μΌλ¨ λ£κΈ° while (idx < N) { if (C[i] < jewerly[idx].first) break; // λͺ»λ΄λ λ¬΄κ² λμ€λ©΄ pq.push(jewerly[idx].second); idx++; } // λ£μ μ μλ κ²μ€μ κ°μΉκ° κ°μ₯ λμ 물건 λ£κΈ° // λλ¨Έμ§λ κ·Έλλ‘ μ μ₯νλκ² μ€μ if (!pq.empty()) { sum += pq.top(); pq.pop(); } } cout << sum; return 0; }
λ§λ¬΄λ¦¬
κ°λ°©μ μμ μμλ‘ μ λ ¬ν ν, λ£μ μ μλ 보μ μ€μμ κ°μΉκ° λμ κ²λΆν° λ£λλ€λ μκ°μ΄ λ§€μ° νκΈ° μ΄λ €μ λ€.
μ°μ μμ νλ₯Ό μ¬μ©νλ λ¬Έμ λ€μ μ°Έ μκ°νκΈ° μ΄λ €μ΄ κ² κ°λ€.
κ·Όλ° μ°Έ λ§€λ ₯μ μΈ λ¬Έμ μΈκ² κ°λ€.