Cod sursa(job #472438)

Utilizator darrenRares Buhai darren Data 24 iulie 2010 21:04:50
Problema Lupul Urias si Rau Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
#include <algorithm>
#include <queue>

using namespace std;

#define d first
#define c second

const int SIZE = 100001;

ifstream fin("lupu.in");
ofstream fout("lupu.out");

void Read();
void Solve();
void Write();

int n, x, l;
long long s;
pair<int, int> v[SIZE];
priority_queue<int> heap;

int main()
{
    Read();
    Solve();
    Write();
}

void Read()
{
    fin >> n >> x >> l;
    for (int i = 1; i <= n; ++i)
        fin >> v[i].d >> v[i].c;
}

void Solve()
{
    sort(v + 1, v + n + 1);
    int up = x % l, lim = 1;

    for (int i = up; i <= x; i += l)
    {
        while (lim <= n && v[lim].d <= i)
            heap.push(v[lim].c), ++lim;

        if (!heap.empty())
        {
            s += heap.top();
            heap.pop();
        }

    }
}

void Write()
{
    fout << s;
}