Cod sursa(job #3169088)

Utilizator ioanabaduIoana Badu ioanabadu Data 14 noiembrie 2023 10:48:28
Problema Lupul Urias si Rau Scor 24
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.18 kb
#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;
}