Cod sursa(job #3169297)

Utilizator ioanabaduIoana Badu ioanabadu Data 14 noiembrie 2023 18:48:02
Problema Lupul Urias si Rau Scor 16
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <queue>
#define N_MAX 100005

using namespace std;
ifstream in ("lupu.in");
ofstream out ("lupu.out");
int n, max_distance, rez_wool, rate;
priority_queue <int> heap;

struct sheep {
    int wool, distance;
}arr[N_MAX];

bool comp (sheep x, sheep y){
    if (x.distance < y.distance)
        return true;
    return false;
}

void solve (){
    int index = 1, current_wool = 0;
    for (int i=max_distance%rate; i<=max_distance; i+=rate){
        for (; index<=n && arr[index].distance <= i; index++){
            heap.push (arr[index].wool);
        }
        current_wool = heap.top();
        while (!heap.empty()){
            // current_wool = heap.top();
            heap.pop();
        }
        rez_wool += current_wool;
        current_wool = 0;
    }
    out << rez_wool;
}

int main (){
    in >> n >> max_distance >> rate;
    for (int i=1; i<=n; ++i){
        in >> arr[i].distance >> arr[i].wool;
    }
    sort (arr + 1, arr + n + 1, comp);
    // for (int i=1; i<=n; ++i)
    //     cout << arr[i].distance << ' ' << arr[i].wool << '\n';
    solve ();
    return 0;
}