https://www.acmicpc.net/problem/1781
<코드>
#include <iostream>
#include <vector>
#include <algorithm>
#include <utility>
#include <tuple>
#include <queue>
using namespace std;
int main()
{
int n;
cin>>n;
vector<pair<int,int>>v;
priority_queue<int,vector<int>,greater<int>>pq;
for(int i=0;i<n;i++)
{
int a,b;
cin>>a>>b;
v.push_back(make_pair(a,b));
}
sort(v.begin(),v.end());
long long sum = 0;
for(int i=0;i<n;i++)
{
if(pq.size()<v[i].first)
{
pq.push(v[i].second);
}
else
{
if(pq.top()<v[i].second)
{
pq.pop();
pq.push(v[i].second);
}
}
}
while(!pq.empty())
{
sum += pq.top();
pq.pop();
}
cout<<sum<<'\n';
}
'PS > 그리디 알고리즘[Greedy]' 카테고리의 다른 글
백준 2170 선 긋기(c++) (0) | 2022.08.06 |
---|---|
백준 1339 단어 수학(c++) (0) | 2022.07.22 |
백준 1049 기타줄(c++) (0) | 2022.07.21 |
1049 기타줄(c++) (0) | 2022.07.21 |
1202 보석 도둑(c++) (0) | 2022.07.20 |