Pagini recente » Cod sursa (job #1371240) | Cod sursa (job #2926192) | Cod sursa (job #1934472) | Cod sursa (job #9541) | Cod sursa (job #3198263)
#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;
}