Cod sursa(job #2399839)

Utilizator serbandonceanSerban Doncean serbandoncean Data 8 aprilie 2019 09:17:35
Problema Lupul Urias si Rau Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <bits/stdc++.h>
#define DMAX 300100
using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");
priority_queue<long long int> H;
struct oaie{long long int dist,lana,inter;};
oaie a[DMAX];
long long int n,distmax,dep,rest;
bool compar(oaie x,oaie y)
{
    return x.inter<y.inter;
}
int main()
{long long int i;///declaratie contor
    fin>>n>>distmax>>dep;
    rest=distmax%dep;
    for(i=1;i<=n;i++)
        {fin>>a[i].dist>>a[i].lana;
        a[i].inter=a[i].dist/dep+1;
        if(!(a[i].dist%dep))
            a[i].inter--;

        }

    sort(a+1,a+n+1,compar);
    long long int nrmax=0;
    long long int nrint=0;
    long long int c1=1;///daca ma vede ca declar aici ma cearta
    while(nrint<=distmax/dep)
    {
        while(c1<=n&&a[c1].inter==nrint)
            H.push(a[c1].lana),c1++;///bagam in aplicatia a arbori cu radacina binari completi care indica maximul numita coada cu prioritate
        if(H.size())
        {nrmax+=H.top();
        H.pop();}
        nrint++;
    }
    fout<<nrmax;
}///acolada inchisa de la main