Pagini recente » Cod sursa (job #860380) | Cod sursa (job #252526) | Cod sursa (job #1413086) | Cod sursa (job #2980304) | Cod sursa (job #3169295)
#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=0; 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;
}