Cod sursa(job #342364)

Utilizator irene_mFMI Irina Iancu irene_m Data 21 august 2009 13:58:36
Problema Lupul Urias si Rau Scor 16
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#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;
}