[[TableOfContents]] = 오늘의 문제 = * [https://www.acmicpc.net/problem/1480|보석 도둑] = 참가자 = = 코드 = == 15이원준 == {{{ #include #include #include #include #include using namespace std; int main(){ priority_queue> que; multiset bag; int N, K; long long int ans = 0; cin >> N >> K; for(int i = 0; i tmp = que.top(); que.pop(); auto p = bag.lower_bound(tmp.second); if(p != bag.end()){ ans+= tmp.first; bag.erase(p); } } cout<< ans< #include #include #include typedef struct _jewel { int m, v; } j; std::vector jewel; std::multiset c; int main() { int n, k; std::cin >> n >> k; for (int i = 0; i < n; i++) { j t; std::cin >> t.m >> t.v; jewel.push_back(t); } std::sort(jewel.begin(), jewel.end(), [](j a, j b) {return a.v < b.v; }); for (int i = 0; i < k; i++) { int t; std::cin >> t; c.insert(t); } long long int res = 0; while (jewel.size() && c.size()) { j t = jewel[jewel.size() - 1]; jewel.pop_back(); std::multiset::iterator it = c.lower_bound(t.m); if (it != c.end()) { res += t.v; c.erase(it); } } std::cout << res; return 0; } }}} == 곽정흠 == = 아이디어 = == 15이원준 == * 가치가 큰 보석 부터 넣을 수 있는 가장 작은 가방에 차례대로 넣는다. * 끝 * 가치는 1 ≤ V ≤ 1,000,000이고 보석 수는 1 ≤ N ≤ 300,000이기 때문에 int범위를 벗어 날 수 있으니 주의 해야한다. == 박인서 == * 원준이 아이디어와 동일 * priority_queue 대신 vector와 sort를 이용 == 곽정흠 ==