Cod sursa(job #3237430)

Utilizator tedicTheodor Ciobanu tedic Data 9 iulie 2024 02:28:18
Problema Lupul Urias si Rau Scor 84
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
#include <algorithm>
#include <queue>

using namespace std;
ifstream cin("lupu.in");
ofstream cout("lupu.out");
struct oaie
{
    int expirare,lana;
} v[100005];
priority_queue<int>oi;
bool cmp(oaie x, oaie y)
{
    return x.expirare<y.expirare;
}
int main()
{
    int n,x,l,dist;
    long long int sol=0;
    cin>>n>>x>>l;
    for(int i=1; i<=n; i++)
    {
        cin>>dist>>v[i].lana;
        v[i].expirare=(x-dist)/l;
    }
    sort(v+1,v+1+n,cmp);
    int poz=0;
    //sol+=v[n].lana;
    for(int i=n; i>=1; i--)
    {
        if(i<n && v[i].expirare==v[i+1].expirare)
        {
            oi.push(v[i].lana);
            continue;
        }
        while(!oi.empty() && v[i+1].expirare>v[i].expirare)
        {
            //cout<<sol<<'\n';
          //  cout<<v[i].expirare<<" "<<v[i].lana<<'\n';
            v[i+1].expirare--;
            sol+=oi.top();
            oi.pop();
        }
        oi.push(v[i].lana);


    } sol+=oi.top();
    cout<<sol;
    return 0;
}