Cod sursa(job #2823983)

Utilizator vladutzu_finutzuVlad Cacenschi vladutzu_finutzu Data 30 decembrie 2021 14:15:06
Problema Lupul Urias si Rau Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <fstream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
ifstream cin("lupu.in");
ofstream cout("lupu.out");
int n, x, l;
struct Oaie{
    int d, l, t;
};

vector<Oaie> v;
priority_queue<int>Q;

void empty_q()
{
    while(!Q.empty())
        Q.pop();
}

bool cmp(Oaie a, Oaie b)
{
    return a.t < b.t;
}

int main(int argc, const char * argv[]) {
    cin>>n>>x>>l;
    for(int i=0; i<n; i++)
    {
        int d, L;
        cin>>d>>L;
        v.push_back({d, L, 0});
        v[i].t = (x - v[i].d) / l;
    }
    
    sort(v.begin(), v.end(), cmp);
    
    int t=v[n - 1].t, i=n-1, sol=0;
    
    while(t >= 0)
    {
        while(i >= 0 and t <= v[i].t)
        {
            Q.push(v[i].l);
            i--;
        }
        if(!Q.empty())
            sol += Q.top(), Q.pop();
        
        t--;
    }
    
    cout<<sol;
    
    return 0;
}