Pagini recente » Cod sursa (job #1249814) | Cod sursa (job #2441764) | Istoria paginii runda/infinity | Cod sursa (job #124435) | Cod sursa (job #1798749)
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
#define BUF_SIZE 16384
char buf[BUF_SIZE];
int pbuf=BUF_SIZE;
FILE*fi,*fo;
inline char nextch(){
if(pbuf==BUF_SIZE){
fread(buf, BUF_SIZE, 1, fi);
pbuf=0;
}
return buf[pbuf++];
}
inline long long nextnum(){
long long a=0;
char c=nextch();
while((c<'0' || c>'9') && c!='-')
c=nextch();
int semn=1;
if(c=='-'){
semn=-1;
c=nextch();
}
while('0'<=c && c<='9'){
a=a*10+c-'0';
c=nextch();
}
return a*semn;
}
struct Oaie{
long long d, a;
}v[100001];
int cmp(Oaie A, Oaie B){
if(A.a>B.a) return 1;
if(A.a<B.a) return 0;
if(A.d>B.a) return 1;
return 0;
}
int main(){
fi=fopen("lupu.in","r");
fo=fopen("lupu.out","w");
int n=nextnum();
long long x=nextnum(), l=nextnum();
for(int i=0;i<n;i++){
v[i].d=nextnum();
v[i].a=nextnum();
}
std::sort(v, v+n, cmp);
long long chosen=0;
int ind=0;
long long sum=0LL;
while(ind<n){
if(v[ind].d+chosen*l<=x){
sum+=v[ind].a;
chosen++;
}
ind++;
}
fprintf(fo,"%lld", sum);
fclose(fi);
fclose(fo);
return 0;
}