Cod sursa(job #1051506)

Utilizator rzvrzvNicolescu Razvan rzvrzv Data 10 decembrie 2013 10:06:03
Problema Lupul Urias si Rau Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<cstdio>
#include<vector>
#include<set>

using namespace std;

multiset <pair<int,int> > v;
multiset<int> h;
long long n,k,l,i,mx,d,PUF,s;

int main()
{
    freopen("lupu.in","r",stdin);
    freopen("lupu.out","w",stdout);
    scanf("%lld%lld%lld",&n,&k,&l);
    mx=0;
    s=0;
    for(i=1;i<=n;i++)
    {
        scanf("%lld%lld",&d,&PUF);
        v.insert(make_pair(((k-d)/l)+1,PUF));
        if((k-d)/l>=mx)
        {
            mx=(k-d)/l;
            mx++;
        }
    }
    multiset<pair<int,int> > ::reverse_iterator it;
    multiset<int> ::iterator it2;
    it=v.rbegin();
    while(mx>0)
    {
        while(it!=v.rend()&&*it.second==mx)
        {
            h.insert(*it.first);
            it++;
        }
        it2=h.end();
        it2--;
        s+=*it2;
        h.erase(it2);
    }
    printf("%lld\n",s);
}