Cod sursa(job #2287100)

Utilizator anca.sotirAnca Sotir anca.sotir Data 21 noiembrie 2018 15:08:59
Problema Lupul Urias si Rau Scor 44
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <fstream>
#include <set>
#include <vector>
#include <algorithm>
using namespace std;
ifstream f("lupu.in");
ofstream g("lupu.out");

struct oaie
{
    long long int lana;
    long long int poz;
};

bool comparaOiPoz(oaie a,oaie b)
{
    if(a.poz<b.poz)
        return true;
    if(a.poz>b.poz)
        return false;
    if(a.lana>b.lana)
        return true;
    return false;
}

vector <oaie> oi;

multiset <long long int> oi_disp;

int main()
{
    long long int n,range,pas;
    f>>n>>range>>pas;
    oi.resize(n);

    for(long long int i=0; i<n; ++i)
    {
        f>>oi[i].poz>>oi[i].lana;
    }

    sort(oi.begin(),oi.end(),comparaOiPoz);

    long long int range_temp=range%pas;
    long long int ans=0;
    long long int i=0;

    while(range_temp<=range)
    {
        for(; oi[i].poz<=range_temp; ++i)
            oi_disp.insert(oi[i].lana);

        if(!oi_disp.empty())
        {
            long long int temp=*oi_disp.rbegin();
            ans+=temp;
            oi_disp.erase(oi_disp.find(temp));
        }

        range_temp+=pas;
    }

    g<<ans;
    return 0;
}