Cod sursa(job #3166250)

Utilizator ana_valeriaAna Valeria Duguleanu ana_valeria Data 7 noiembrie 2023 23:46:06
Problema Lupul Urias si Rau Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
#include <algorithm>
#include <queue>
#define MAX 100000
using namespace std;
ifstream cin ("lupu.in");
ofstream cout ("lupu.out");
priority_queue <int> pq;
struct ura
{
    int cnt, wool;
};
ura v[MAX + 10];
bool cmp(ura a, ura b)
{
    if (a.cnt > b.cnt)
        return true;
    if (a.cnt < b.cnt)
        return false;
    if (a.wool > b.wool)
        return true;
    return false;
}
int main()
{
    int n, maxDist, addedDist;
    cin >> n >> maxDist >> addedDist;
    for (int i = 1; i <= n; i++)
    {
        int dist, wool;
        cin >> dist >> wool;
        int cnt = (maxDist - dist) / addedDist;
        v[i] = {cnt, wool};
    }
    sort(v + 1, v + n + 1, cmp);
    long long totalWool = 0;
    int i = 1;
    for (int cnt = v[1].cnt; cnt >= 0; cnt--)
    {
        while (i <= n && v[i].cnt >= cnt)
        {
            pq.push(v[i].wool);
            i++;
        }
        if (!pq.empty())
        {
            totalWool = totalWool + pq.top();
            pq.pop();
        }
    }
    cout << totalWool;
    return 0;
}