Cod sursa(job #3275235)

Utilizator Edi17roAnghel Eduard Edi17ro Data 9 februarie 2025 15:20:23
Problema Lupul Urias si Rau Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("lupu.in");
ofstream out("lupu.out");
const int NMAX = 100000;
vector<pair<int, int> > oaie;
priority_queue<int> q;
int n, x, l;
unsigned long long ans;

bool comp(pair<int, int> a, pair<int, int> b)
{
    return a.first < b.first;
}

void solve()
{
    int dist = 0;

    for(int i = 0; i < n; ++i)
    {
        if(dist >= oaie[i].first)
        {
            q.push(oaie[i].second);
        }
        else
        {
            if(!q.empty())
            {
                ans += q.top();
                q.pop();
            }
            dist += l;
            --i;
            if(dist > x)
            {
                break;
            }
        }
    }

    while(dist <= x && !q.empty())
    {
        ans += q.top();
        q.pop();
        dist += l;
    }
}

int main()
{
    in >> n >> x >> l;

    for(int i = 1; i <= n; ++i)
    {
        int d, lana;

        in >> d >> lana;

        oaie.push_back({d, lana});
    }

    sort(oaie.begin(), oaie.end(), comp);
    solve();

    out << ans;

    return 0;
}