Cod sursa(job #2416950)

Utilizator adiaioanaAdia R. adiaioana Data 28 aprilie 2019 17:25:31
Problema Lupul Urias si Rau Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>
#include <vector>
#include <algorithm>
#include <set>
#include <iterator>
#include <cmath>

using namespace std;
ifstream cin("lupu.in");
ofstream cout("lupu.out");
long long n,x,l,nv,nm,sum,d,a,ind,NM,answer;

vector < pair<long long, long long> > v;
multiset <long long> sety;
std:: multiset<long long> :: iterator it;
void scan();

int main()
{
    scan();
    sort(v.begin(), v.end());

    ind=v.size()-1;
    for(int i=NM; i; i--)
    {
        while(ind && v[ind].first==i)
            sety.insert(v[ind--].second);
        if(!sety.empty())
        {
            it=sety.end(); it--;
            answer+=*it;
            sety.erase(it);
        }
    }

    cout<<answer<<'\n';
    return 0;
}
void scan(){

    cin>>n>>x>>l;
    v.push_back({0,0});
    for(int i=1; i<=n; i++)
    {
        cin>>d>>a;
        if(x>=d)
            nm=(x-d)/l+1;
        else nm=-1;

        if(nm>=0)
            v.push_back({nm,a});
        NM=max(NM,nm);
    }
}