Pagini recente » Cod sursa (job #3346429) | Borderou de evaluare (job #1499946) | Cod sursa (job #202641) | Monitorul de evaluare | Cod sursa (job #3326699)
#include <fstream>
#include <utility>
#define x first
#define y second
#include <queue>
#include <algorithm>
using namespace std;
ifstream in("lupu.in");
ofstream out("lupu.out");
typedef pair <int, int> pii;
const int nmax = 1e5;
int n, xx, kklength;
pii a[nmax + 2];
int kkdiv;
int64_t solve(){
priority_queue <int> pq;
int64_t bestt = 0;
for(int itq = 0, idx = 1; itq <= kkdiv; itq++){
for(; idx <= n && a[idx].x <= kklength; idx++)
pq.push(a[idx].y);
if(!pq.empty()){
bestt += pq.top(); pq.pop();
}
kklength += xx;
}
return bestt;
}
int main(){
in>>n>>kklength>>xx;
kkdiv = kklength / xx;
kklength -= (xx * kkdiv);
for(int i = 1; i <= n; i++){
in>>a[i].x>>a[i].y;
}
sort(a + 1, a + 1 + n); ///after dist
out<<solve()<<"\n";
return 0;
}