Pagini recente » Cod sursa (job #2653767) | Clasamentul arhivei de probleme | Cod sursa (job #472815) | Cod sursa (job #440254) | Cod sursa (job #629131)
Cod sursa(job #629131)
#include <cstdio>
#include <algorithm>
#include <queue>
using namespace std;
#define nmax 100010
priority_queue <int> heap;
struct gutui
{
int h, g;
} v[nmax];
int n, h, u, sol;
int cmp(gutui x, gutui y)
{
return x.h<y.h;
}
int main()
{
freopen("gutui.in","r",stdin);
freopen("gutui.out","w",stdout);
scanf("%d %d %d",&n, &h, &u);
int i, k;
for (i=1; i<=n; i++) scanf("%d %d", &v[i].h, &v[i].g);
sort (v+1, v+n+1, cmp);
k=h;
while (k-u>=v[1].h) k-=u;
i=1;
while (1)
{
if (v[i].h>k || i>n)
{
if (!heap.empty())
{
sol+=heap.top();
heap.pop();
}
k+=u;
if (k>h) break;
}
if (v[i].h<=k && i<=n)
{
heap.push(v[i].g);
i++;
}
}
printf("%d\n",sol);
}