Cod sursa(job #3220184)

Utilizator gianiferSpita Alexandru-Mihai gianifer Data 2 aprilie 2024 19:00:19
Problema Lupul Urias si Rau Scor 4
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("lupu.in");

ofstream fout("lupu.out");

int n;

int dist_max, dist_oi;

pair<int, int> oi[100005];

int main()
{
    fin >> n >> dist_max >> dist_oi;
    for (int i = 1; i <= n; i++)
    {
        fin >> oi[i].first >> oi[i].second;
        oi[i].first -= oi[i].first * 2;
    }

    sort(oi + 1, oi + n + 1);
    int i = 1;
    long long int rez = 0;
    int sclav;
    for (sclav = dist_max; sclav >= 0; sclav -= dist_oi)
    {
        priority_queue<int> q;
        while (i <= n && (((-oi[i].first) > sclav) && ((-oi[i].first) <= sclav + dist_oi)))
        {
            q.push(oi[i].second);
            i++;
        }
        if (!q.empty())
        {
            rez += q.top();
            q.pop();
        }
    }
    if (sclav < 0)
    {
        priority_queue<int> q;
        while (i <= n && (((-oi[i].first) >= 0) && ((-oi[i].first) <= sclav + dist_oi)))
        {
            q.push(oi[i].second);
            i++;
        }
        if (!q.empty())
        {
            rez += q.top();
            q.pop();
        }
    }
    fout << rez;
}