Cod sursa(job #3207719)

Utilizator TeodorVTeodorV TeodorV Data 26 februarie 2024 19:50:13
Problema Lupul Urias si Rau Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <bits/stdc++.h>

using namespace std;

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

vector<pair<int, int>> v;
priority_queue<int, vector<int>, greater<int>> heap;

bool comp(const pair<int, int>& a, const pair<int, int>& b)
{
    if(a.first==b.first)
        return a.second>b.second;
    return a.first>b.first;
}

int main()
{
    int n,dmax,L;
    fin>>n>>dmax>>L;
    for(int i=1; i<=n; i++)
    {
        int a,b;
        fin>>a>>b;
        v.push_back(make_pair(a, b));
    }
    sort(v.begin(), v.end(), comp);
    /*for(unsigned int i=0; i<v.size(); i++)
        fout<<v[i].first<<' '<<v[i].second<<'\n';*/
    int rez=0;
    for(unsigned int i=0; i<v.size(); i++)
    {
        if(v[i].first+L*heap.size()<=dmax)
        {
            heap.push(v[i].second);
            rez+=v[i].second;
            continue;
        }
        if(!heap.empty())
        {
            if(heap.top()<v[i].second)
            {
                    rez-=heap.top();
                    heap.pop();
                    heap.push(v[i].second);
                    rez+=v[i].second;
            }
            else continue;
        }
    }
    fout<<rez;
    return 0;
}