Pagini recente » Cod sursa (job #2934743) | Cod sursa (job #2040306) | Cod sursa (job #943677) | Cod sursa (job #1774938) | Cod sursa (job #342364)
Cod sursa(job #342364)
#include <cstdio>
#define MaxN 10009
int d[MaxN],l[MaxN],X,L,n,s,k;
void cit()
{
int i;
freopen("lupu.in","r",stdin);
scanf("%d%d%d",&n,&X,&L);
for(i=1;i<=n;i++)
scanf("%d%d",&d[i],&l[i]);
}
void swap(int i,int j)
{
int aux=d[i]; d[i]=d[j]; d[j]=aux;
aux=l[i]; l[i]=l[j]; l[j]=aux;
}
void poz(int li,int ls)
{
int i=0,j=-1,c;
while(li<ls)
{
if(d[li]>d[ls])
{
swap(li,ls);
c=i; i=-j; j=-c;
}
li+=i; ls+=j;
}
k=li;
}
void quick(int li,int ls)
{
if(li<ls)
{
poz(li,ls);
quick(li,k-1);
quick(k+1,ls);
}
}
void sol()
{
int max,t=0,i=n,j;
while(d[i]>X && i>=1)
i--;
while(i>=1)
{
j=i; max=0;
while(d[j]+t>X && j>=1)
{
if(l[j]>max)
max=l[j];
j--;
}
i=j;
s+=max; t+=L;
}
}
void afis()
{
freopen("lupu.out","w",stdout);
printf("%d",s);
}
int main()
{
cit();
quick(1,n);
sol();
afis();
return 0;
}