Cod sursa(job #565692)
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
struct oaie
{
int d;
int lana;
};
int i1,k1,k2,n,x,l,aux;
oaie v[100000];
bool comp1(oaie a,oaie b);
bool comp2(oaie a,oaie b);
int main()
{
FILE *in,*out;
in=fopen("lupu.in","rt");
out=fopen("lupu.out","wt");
fscanf(in,"%d%d%d",&n,&x,&l);
for(i1=0;i1<n;i1++)
{
fscanf(in,"%d%d",&k1,&k2);
if(k1<=x)
{
v[aux].d=k1;
v[aux].lana=k2;
aux++;
}
}
n=aux;
sort(v,v+n,comp1);
sort(v,v+n,comp2);
//for(i1=0;i1<n;i1++)
// printf("%d %d\n",v[i1].d,v[i1].lana);
int add=0,total=0;
for(i1=0;i1<n;i1++)
{
if(v[i1].d+add<=x)
{
total+=v[i1].lana;
add+=l;
}
}
fprintf(out,"%d",total);
fclose(in);
fclose(out);
return 0;
}
bool comp1(oaie a,oaie b)
{
if(a.d>b.d)
return true;
else
if(a.d==b.d)
if(a.lana>b.lana)
return true;
return false;
}
bool comp2(oaie a,oaie b)
{
if(x-a.d+x-b.d<=l)
if(a.lana>b.lana)
return true;
return false;
}