Cod sursa(job #2287073)

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

struct oaie
{
    int lana;
    int poz;
    bool operator<(const oaie& other) const
    {
        if(lana>other.lana)
            return true;
        if(lana<other.lana)
            return false;
        if(poz<other.poz)
            return true;
        return false;
    }
};

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 <oaie> oi_aux;
multiset <oaie> oi_disp;

int main()
{
    int n,range,pas;
    f>>n>>range>>pas;
    oi.resize(n);
    for(int i=0;i<n;++i)
    {
        f>>oi[i].poz>>oi[i].lana;
        //oi_aux.insert(oi[i]);
    }
    sort(oi.begin(),oi.end(),comparaOiPoz);

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

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

        ans+=oi_disp.begin()->lana;

        oi_disp.erase(oi_disp.begin());

        range_temp+=pas;
    }
    g<<ans;
    return 0;
}