Cod sursa(job #2321310)

Utilizator trutruvasilicaHuhurez Marius trutruvasilica Data 15 ianuarie 2019 22:39:10
Problema Lupul Urias si Rau Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <algorithm>
using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");
struct cmp
{
    bool operator ()(const int &a, const int &b)
    {
        return a<b;
    }
};
priority_queue<int,vector<int>,cmp>Q;
pair<int,int>oi[100001];
bool comp(pair<int,int>a,pair<int,int>b)
{
    return a.first<b.first;
}
int main()
{
    int N,X,L,i,tmax=0,aux,sum=0;
    fin>>N>>X>>L;
    for(i=1;i<=N;i++)
    {
        fin>>oi[i].first>>oi[i].second;
        oi[i].first=1+(X-oi[i].first)/L;
        tmax=max(tmax,oi[i].first);
    }
    sort(oi+1,oi+N+1,comp);
    aux=N;
    for(i=tmax;i>=1;i--)
    {
        while(oi[aux].first == i && aux>0)
        {
            Q.push(oi[aux].second);
            aux--;
        }
        if(Q.size()>0)
        {
            sum+=Q.top();
            Q.pop();
        }
    }
    fout<<sum;
}