Cod sursa(job #2627250)

Utilizator CraniXortDumitrescul Eduard CraniXort Data 10 iunie 2020 11:32:01
Problema Lupul Urias si Rau Scor 28
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <bits/stdc++.h>
#define maxn 100005

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

struct Sheep{
    long long dist, val;
}sheep[maxn];

bool sheepSort (Sheep a, Sheep b){
    return a.dist > b.dist;
}

int main()
{
    long long n, maxDist, moveDist, i;
    long long ans=0;
    fin >> n >> maxDist >> moveDist;

    for (i=0; i<n; i++)
        fin >> sheep[i].dist >> sheep[i].val;

    std::sort (sheep, sheep+n, sheepSort);
    for (i=0; i<n; i++)
        if (sheep[i].dist <= maxDist)
        break;

    while (maxDist >=0){
        std::priority_queue <long long> pq;
        for (; i<n; i++){
            if (maxDist-sheep[i].dist >= moveDist and pq.empty() == false)
                break;
            pq.push (sheep[i].val);
        }
        if (pq.empty() == false)
        ans = ans + pq.top();
        maxDist -= moveDist;
    }

    fout << ans << '\n';

    return 0;
}