Cod sursa(job #2823472)

Utilizator db_123Balaban David db_123 Data 28 decembrie 2021 16:42:39
Problema Lupul Urias si Rau Scor 8
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
#include <vector>
#include <queue>
#include <bitset>

using namespace std;

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

class Oaie{
public:
    int distInit;
    int cantitateLana;
    int poz;
};

class Compare{
public:
    bool operator()(Oaie a,Oaie b){
        return a.cantitateLana<b.cantitateLana;
    }
};

int n,x,l;///n:nr oi,x:distanta maxima lup oi,l:distanta de departare oi lup
vector<Oaie> v;

void read(){
    cin>>n>>x>>l;
    v.resize(n+1,{0,0,0});
    for(int i=1;i<=n;i++){
        cin>>v[i].distInit>>v[i].cantitateLana;
        v[i].poz=i;
    }
}

void solve(){
    priority_queue<Oaie,vector<Oaie>,Compare> Q(v.begin()+1,v.end());

    int res=0,distDeFugit=0;
    while(!Q.empty()){
        if(Q.top().distInit+distDeFugit<=x){
            res+=Q.top().cantitateLana;
            distDeFugit+=l;
        }
        Q.pop();
    }
    cout<<res;
}

int main() {

    read();
    solve();
    return 0;
}