Cod sursa(job #2032683)

Utilizator ruxandramateiMatei Ruxandra ruxandramatei Data 5 octombrie 2017 16:06:32
Problema Lupul Urias si Rau Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <queue>

using namespace std;

#define OAIE pair<int,int>


ifstream in ("lupu.in");
ofstream out ("lupu.out");

int N, M, K;
long long suma;
OAIE arr[100002];

priority_queue < int > coada;

void citire(){
    in >> N >> M >> K;
    for (int i = 1; i <= N; ++i) {
        in >> arr[i].first >> arr[i].second;
    }
}

void rezolvare(){
    int hotar = 0;
    for (int i = 1; i <= N && arr[i].first <= M; ++hotar) {
        while (i <= N && arr[i].first <= hotar * K) {
            coada.push(arr[i].second);
            i++;
        }
        if (!coada.empty()){
            suma += coada.top();
            coada.pop();
        }
    }
}

int main(){
    citire();
    sort(arr + 1, arr + N + 1);
    rezolvare();
    out << suma;
    in.close();
    out.close();
}