Cod sursa(job #2818459)

Utilizator proflaurianPanaete Adrian proflaurian Data 16 decembrie 2021 06:05:05
Problema Gutui Scor 100
Compilator cpp-64 Status done
Runda teme_upb Marime 1.28 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("gutui.in");
ofstream g("gutui.out");
const int N = 100010;
int n,hMaxim,hInitial,crestere,greutate,gutuiMax,gutuiPuse;
int64_t sol;
vector<int> greutati[N];
priority_queue<int> candidati;
int main()
{
    int hMaxim,crestere;
    f>>n>>hMaxim>>crestere;
    for(int i=1;i<=n;i++)
    {
        int hInitial,greutate;
        f>>hInitial>>greutate;
        if(hInitial<=hMaxim)
        {
            gutuiMax=(hMaxim-hInitial)/crestere;
            if(gutuiMax>=n)
                sol+=greutate;
            else
                greutati[gutuiMax].push_back(greutate);
        }
    }
    for(gutuiMax=0;gutuiMax<n;gutuiMax++)
        if(greutati[gutuiMax].size())
            for(auto Greutate:greutati[gutuiMax])
                if(gutuiPuse<=gutuiMax)
                {
                    sol+=Greutate;
                    candidati.push(-Greutate);
                    gutuiPuse++;
                }
                else
                    if(Greutate>-candidati.top())
                {
                    sol+=candidati.top();
                    sol+=Greutate;
                    candidati.pop();
                    candidati.push(-Greutate);
                }
    g<<sol;
    return 0;
}