Cod sursa(job #3198263)

Utilizator TomMMMMatei Toma TomMMM Data 28 ianuarie 2024 16:53:12
Problema Lupul Urias si Rau Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <algorithm>

using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");


int Nr_oi, L_jump,O_jump;
vector<pair<int,int>> oi;//first = timp ; second = lana
priority_queue<int> myQ;

int convert( int dist ){
    return ( L_jump - dist ) / O_jump ;
}

void read(){
    oi.push_back({0,0});
    fin>> Nr_oi >> L_jump >> O_jump;
    for( int i=1 ;i <= Nr_oi ;i++ ){
        int dist , lana ;
        fin>> dist >> lana;
        oi.push_back({convert(dist), lana});

    }
}

int main() {

    read();
    sort(oi.begin()+1, oi.end());
    int timp = oi[ Nr_oi ] . first;
    int poz = Nr_oi;
    long sol = 0;
    oi[ 0 ] . first = -1;

    for( int t=timp ;t >= 0 ;t-- ){

        while( oi[ poz ] . first == t ){
            myQ.push( oi[ poz ] . second );
            poz--;
        }

        if( ! myQ . empty() ){
            sol += myQ . top();
            myQ . pop();
        }

    }
    fout << sol;
}