Pagini recente » Cod sursa (job #867228) | Cod sursa (job #2330794) | Cod sursa (job #797999) | Cod sursa (job #3126730) | Cod sursa (job #2921560)
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <queue>
using namespace std;
#define MAX_N 100000
pair <int,int> poz[MAX_N+1];
priority_queue<int> heap;
bool cmp(const pair<int,int>& a, const pair<int,int>& b) {
return a.first<b.first;
}
void insert(int value) {
heap.push(value);
}
int extractTop() {
int top;
top = 0;
if (!heap.empty()) {
top = heap.top();
heap.pop();
}
return top;
}
int main(){
FILE *fin,*fout;
int n,i,x,l;
long long s;
fin=fopen("lupu.in","r");
fout=fopen("lupu.out","w");
fscanf(fin,"%d%d%d",&n,&x,&l);
for(i=0;i<n;i++){
fscanf(fin,"%d%d",&poz[i].first,&poz[i].second);
}
sort(poz,poz+n,cmp);
s=0;
i=x%l;
int jj=0;
while(i<=x){
while(jj<=n && poz[jj].first<=i){
insert(poz[jj++].second);
}
s+=extractTop();
i+=l;
}
fprintf(fout,"%lld\n",s);
fclose(fout);
return 0;
}