Cod sursa(job #1888380)

Utilizator eusebiu_gageaGagea Eusebiu-Andrei eusebiu_gagea Data 22 februarie 2017 08:26:26
Problema Lupul Urias si Rau Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("lupu.in");
ofstream g("lupu.out");

#define NMAX 100005

struct Oaie{
    long long dist, lana;
};

long long n, D, L, mx, cost, i;
Oaie v[NMAX];
priority_queue <long long> oi;

bool compare(Oaie x, Oaie y) {
    return x.dist > y.dist;
}

int main()
{
    f>>n>>D>>L;

    for(i = 1; i <= n; i++) {
        f>>v[i].dist>>v[i].lana;
        v[i].dist = (D - v[i].dist) / L + 1;
        mx = max(mx, v[i].dist);
    }

    sort(v + 1, v + n + 1, compare);

    i = 1;
    while(mx > 0) {
        while(v[i].dist == mx) {
            oi.push(v[i].lana);
            i++;
        }
        if(!oi.empty()) {
            cost += oi.top();
            oi.pop();
        }
        mx--;
    }

    g<<cost<<'\n';
    return 0;
}