Cod sursa(job #1202348)

Utilizator diana97Diana Ghinea diana97 Data 27 iunie 2014 19:03:19
Problema Lupul Urias si Rau Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <algorithm>

using namespace std;

ifstream f ("lupu.in");
ofstream g ("lupu.out");

const int NMAX = 100000 + 1;

int n, x, l, t;
vector <int> v[NMAX];
priority_queue <int> q;

void citeste () {
    f >> n >> x >> l;
    int d, c, a;
    for (int i = 1; i <= n; i++) {
        f >> d >> c;
        if (x > d)
            a = (x - d) / l,
            v[a].push_back(c),
            t = max(t, a);
    }
}

void rezolva () {
    long long sol = 0;
    int k;
    for (int i = t; i >= 0; i--) {
        k = v[i].size();
        for (int j = 0; j < k; j++) q.push(v[i][j]);
        if (!q.empty ()) sol += q.top(), q.pop();
    }
    g << sol << '\n';
}

int main () {
    citeste ();
    rezolva ();
    return 0;
}