Cod sursa(job #3125863)

Utilizator TudorBordeaBordea Tudor TudorBordea Data 4 mai 2023 18:18:52
Problema Lupul Urias si Rau Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <fstream>
#include <queue>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    ifstream in("procesor.in");
    ofstream out("procesor.out");
    priority_queue <int> h_p;
    int n;
    in >> n;
    vector < pair<int, int>> v;
    v.resize(n);
    for (int i = 0; i < n; i++)
    {
        in >> v[i].first >> v[i].second;
    }
    sort(v.begin(), v.end());
    int timp = 0;
    long long p_tot = 0;
    for (int i = 0; i < n; i++)
    {
        if (timp < v[i].first)///poate fi executat
        {
            h_p.push(-v[i].second);
            timp++;
        }
        else
        {
            int p_c = v[i].second;
            if (h_p.empty())
            {
                p_tot += p_c;
                continue;
            }
            int p_a = -h_p.top();
            if (p_c > p_a)
            {
                p_tot += p_a;
                h_p.pop();
                h_p.push(-p_c);
            }
            else
            {
                p_tot += p_c;
            }
        }
    }
    out << p_tot << "\n";
    in.close();
    out.close();
    return 0;
}