Pagini recente » Cod sursa (job #914886) | Cod sursa (job #2255820) | Cod sursa (job #1216323) | Cod sursa (job #89714) | Cod sursa (job #3169088)
#include <iostream>
#include <fstream>
#include <algorithm>
#define N_MAX 100005
using namespace std;
ifstream in ("lupu.in");
ofstream out ("lupu.out");
int n, max_distance, rez_wool, rate;
struct sheep {
int wool, distance;
}arr[N_MAX];
bool comp (sheep x, sheep y){
if (x.distance > y.distance)
return true;
else if (x.distance == y.distance){
if (x.wool > y.wool)
return true;
return false;
}
return false;
}
void solve (){
int current_max = 0;
for (int i=1; i<=n; ++i){
if (max_distance - arr[i].distance >= rate){
rez_wool += current_max;
current_max = 0;
max_distance -= rate;
}
if (max_distance >= arr[i].distance){
current_max = max (current_max, arr[i].wool);
}
}
out << rez_wool + current_max;
}
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;
}