Pagini recente » Cod sursa (job #87050) | Cod sursa (job #1848887) | Cod sursa (job #1047324) | Cod sursa (job #2676104) | Cod sursa (job #432678)
Cod sursa(job #432678)
#include <stdio.h>
#include <algorithm>
#include <queue>
using namespace std;
#define NMax 100005
#define PII pair<int, int>
#define t first
#define g second
int N, H, U, bst, end[NMax];
PII v[NMax];
priority_queue<int> heap;
bool operator< (const PII& a, const PII& b)
{ return (H-a.t) / U > (H-b.t) / U; }
int main()
{
int i, t;
freopen("gutui.in", "r", stdin);
freopen("gutui.out", "w", stdout);
scanf("%d %d %d", &N, &H, &U);
for (i = 1; i <= N; ++i)
scanf("%d %d", &v[i].t, &v[i].g);
sort(v+1, v+N+1);
for (i = 1, end[N+1] = -1; i <= N; ++i)
end[i] = (H-v[i].t) / U;
for (i = 1; i <= N; )
{
for (t = end[i]; i <= N && end[i] == t; ++i)
heap.push(v[i].g);
for (t -= end[i]; t && !heap.empty(); --t)
{
bst += heap.top();
heap.pop();
}
}
printf("%d\n", bst);
return 0;
}