안녕하세요. 오늘은 컵라면을 먹을거예요.
https://www.acmicpc.net/problem/1781
뒤에서부터 보면 됩니다.
데드라인이 N인것부터 보면서 우선순위 큐에 컵라면수들을 다 넣고 최댓값을 하나씩 빼면 됩니다.
#include <iostream>
#include <vector>
#include <queue>
#define ll long long
using namespace std;
int main(void)
{
ios_base::sync_with_stdio(false); cin.tie(NULL);
vector <ll> v[202020];
priority_queue <ll> pq;
ll N, i, a, b, ans = 0;
cin >> N;
for (i = 0; i < N; i++)
{
cin >> a >> b;
v[a].push_back(b);
}
for (i = N; i >= 1; i--)
{
for (ll x : v[i])
pq.push(x);
if (pq.size())
{
ans += pq.top();
pq.pop();
}
}
cout << ans;
}
감사합니다.