Cod sursa(job #1505695)

Utilizator raulmuresanRaul Muresan raulmuresan Data 19 octombrie 2015 17:44:49
Problema Lupul Urias si Rau Scor 68
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<fstream>
#include<iostream>
#include<vector>
#include<set>
#include<queue>
#include <algorithm>
using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");



int l,n,m,k,i,j,p,x,y,t,a1,a2;
long long int sol;
priority_queue <int> heap;
struct coada
{
    int x,y;
}c[200009];
bool cmp(coada i,coada j)
{
    return i.x>j.x;
}



int main()
{
    fin>>n>>x>>l;
    for(i=1;i<=n;i++)
    {
        fin>>a1>>a2;
        c[i].y=a2;
        if(x-a1<0)
            c[i].x=0;
        else
            c[i].x=((x-a1))/2+1;
       // fout<<a1<<" "<<a2<<"\n";
    }
    sort(c+1,c+n+1,cmp);
    k=c[1].x;
    p=1;
    for(i=k;i>=1;i--)
    {
        //fout<<i<<" ";
        while(c[p].x >= i)
        {
            heap.push(c[p].y);
            p++;

        }

        if(! heap.empty())
        {
            x=heap.top();
            sol=(long long int )sol+x;
            //heap.erase(x);
             heap.pop();
        }


    }
   // fout<<"\n";

    for(i=1;i<=n;i++)
    {
        //fout<<c[i].x<<" "<<c[i].y<<"\n";
    }
    fout<<sol<<"\n";
}