Cod sursa(job #1848662)

Utilizator KOzarmOvidiu Badea KOzarm Data 16 ianuarie 2017 13:41:00
Problema Lupul Urias si Rau Scor 28
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#include <algorithm>
#include <queue>
using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");

struct oaie
{
    int d,l;
}a[100005];

int n,x,l,k;
priority_queue <int> q;
bool cmp(oaie a,oaie b)
{
    if(a.d!=b.d)
        return a.d<b.d;
    else
        return a.l>b.l;
}

int main()
{
    fin>>n>>x>>l;
    for(int i=1;i<=n;i++)
    {
        k++;
        fin>>a[k].d>>a[k].l;
        if(a[k].d>x)
            k--;
        else
            a[k].d=(x-a[k].d)/l;
    }
    n=k;
    k=0;
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;i++)
    {
        if(a[i].d-k>=0)
        {
            k++;
            q.push(a[i].l);
        }
        else
        if(a[i].l>q.top())
        {
            q.pop();
            q.push(a[i].l);
        }
    }
    long long sum=0;
    while(!q.empty())
    {
        sum+=q.top();
        q.pop();
    }
    fout<<sum;
    return 0;
}