Cod sursa(job #2818286)

Utilizator daria_pDaria Popescu daria_p Data 15 decembrie 2021 19:59:22
Problema Lupul Urias si Rau Scor 100
Compilator cpp-64 Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I Marime 0.79 kb
#include <fstream>
#include <queue>
#include <algorithm>
using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");
priority_queue<int> Q;
struct Oaie
{
    int l,t;
    bool operator < (const Oaie &o)
    {
        return t < o.t;
    }
};
Oaie oi[100005];
int main()
{
    int n,X,L,i;
    long long sol=0;
    fin >>n>>X>>L;
    for(i=1;i<=n;i++)
    {
        int dist;
        fin >>dist>>oi[i].l;
        oi[i].t=(X-dist)/L;
    }
    sort(oi+1,oi+n+1);
    int p=n,T=oi[n].t;
    while(T>=0)
    {
        while(p>0 && oi[p].t>=T)
        {
            Q.push(oi[p].l);
            p--;
        }
        if(!Q.empty())
        {
            sol+=Q.top();
            Q.pop();
        }
        T--;
    }
    fout << sol;
    return 0;
}