Cod sursa(job #3235220)

Utilizator AlexanderCernyCernaianu Alexandru AlexanderCerny Data 16 iunie 2024 12:13:51
Problema Lupul Urias si Rau Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
#define DIM 100001
#include <algorithm>

using namespace std;

ifstream fin ("lupu.in");
ofstream fout("lupu.out");

priority_queue<int>Q;
struct elem
{
    int et;
    int l;
}v[DIM];
int n,x,d,l,dis,k,cnt;
long long sol;
bool cmp(elem a, elem b)
{
    return a.et<b.et;
}
int main()
{
    fin>>n>>x>>d;
    for(int i=1;i<=n;i++)
    {
        fin>>dis>>l;
        if(dis>x)
            continue;
        v[++k].et=(x-dis)/d;
        v[k].l=l;
    }
    sort(v+1,v+k+1,cmp);
    cnt=k;
    for(int i=v[k].et;i>=0;i--)
    {
        while(cnt>=1 && v[cnt].et==i)
        {
            Q.push(v[cnt].l);
            cnt--;
        }
        if(!Q.empty())
        {
            sol+=1LL*Q.top();
            Q.pop();
        }
    }
    fout<<sol;
    return 0;
}