Cod sursa(job #2800213)

Utilizator ana_madalina_18Radu Ana Madalina ana_madalina_18 Data 13 noiembrie 2021 15:43:44
Problema Lupul Urias si Rau Scor 64
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
#include <queue>
#include <algorithm>
using namespace std;
struct elem
{
    int dist,lana;
};
elem sir[100009];
bool in_functie_de_dist(const elem &a, const elem &b)
{
    return a.dist<b.dist;
}
struct elem_heap
{
    int lana;
    bool operator <(const elem_heap& other)const
    {
        return lana>other.lana;
    }
};
priority_queue <int> heap;
int x,l;
int verif(int indice)
{
    int etapa=(x-sir[indice].dist)/l+1;
    return etapa;
}

int main()
{
    ifstream fin("lupu.in");
    ofstream fout("lupu.out");
    int n;
    fin>>n>>x>>l;
    for(int i=1;i<=n;i++)
    {
       fin>>sir[i].dist>>sir[i].lana;
    }
    sort(sir+1,sir+n+1,in_functie_de_dist);
    int etape=x/l+1;
    int ind=1;
    int sum=0;
    for(int i=etape;i>=1;i--)
    {
        while(ind<=n && verif(ind)==i)
        {
            heap.push(sir[ind].lana);
            ind++;
        }
        sum+=heap.top();
        heap.pop();
    }
    fout<<sum;
    return 0;
}