Cod sursa(job #2822313)

Utilizator sims_glAlexandru Simion sims_gl Data 23 decembrie 2021 20:07:02
Problema Lupul Urias si Rau Scor 92
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>
#include <queue>
#include <algorithm>
#define Nmax 100005
#include<iostream>
using namespace std;


priority_queue<int> Q;

struct Oaie
{
    int la, ti;
    bool operator < (const Oaie &o)
    {
        return ti < o.ti;
    }
};
Oaie oi[Nmax];
int n, X, L, p, T;
long long sol = 0;
int main()
{

    freopen("lupu.in", "r", stdin);
    freopen("lupu.out", "w", stdout);


    cin >> n >> X >> L;
    for(int i = 1; i <= n; i++)
    {
        int dist;
        cin >> dist >> oi[i].la;
        oi[i].ti = (X - dist) / L;
    }
    sort(oi + 1, oi + n + 1);

    p = n, T = oi[n].ti;

    while(T >= 0)
    {
        while(p > 0 && oi[p].ti >= T)
        {
            Q.push(oi[p].la);
            p--;
        }
        if(!Q.empty())
        {
            sol += Q.top();
            Q.pop();
        }
        T--;
    }
    cout << sol;
    return 0;
}