Cod sursa(job #2292432)

Utilizator Andrei243Nitu Mandel Andrei Andrei243 Data 29 noiembrie 2018 16:00:25
Problema Lupul Urias si Rau Scor 48
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <bits/stdc++.h>

using namespace std;

struct oaie
{
    int distanta,lana;
    oaie(int _dis=0,int _lan=0)
    {
        distanta=_dis;
        lana=_lan;
    }

};

int main()
{
    ifstream in("lupu.in");
    ofstream out("lupu.out");
    int N,X,L;
    in>>N>>X>>L;

    vector<oaie> oi;
    for(int i=0; i<N; i++)
    {
        int aux1,aux2;
        in>>aux1>>aux2;
        oi.push_back(oaie(aux1,aux2));

    }
    priority_queue<int> selectate;
    int suma=0;
    int nr_iter=X/L;
    for(int i=0; i<=nr_iter; i++)
    {
        for(vector<oaie>::iterator iter=oi.end()-1; iter!=oi.begin(); iter--)
        {
            if((*iter).distanta<=X%L+i*L)
            {
                selectate.push((*iter).lana);
                oi.erase(iter);
            }
        }

        if(!oi.empty())
        {
            if(oi[0].distanta<=X%L+i*L)
            {
                selectate.push(oi[0].lana);
                oi.erase(oi.begin());
            }
        }
        if(!selectate.empty())
        {
            suma+=selectate.top();
            selectate.pop();
        }
    }
    out<<suma;
    in.close();
    out.close();
    return 0;
}