Cod sursa(job #296543)

Utilizator infooainfo oa infooa Data 4 aprilie 2009 21:50:13
Problema Lupul Urias si Rau Scor 8
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include<iostream.h>
#include<stdio.h>
long long n,x,l,d[20000],a[20000],i,lana,ok=1,ord,aux,max,j,lana2,dd[2000],aa[2000];
int main()
{
	freopen("lupu.in","r",stdin);
	freopen("lupu.out","w",stdout);
	cin>>n>>x>>l;
	for(i=1;i<=n;i++)
	{
		cin>>d[i]>>a[i];
		dd[i]=d[i];
		aa[i]=a[i];
	}
	do
	{
		ord=1;
		for(i=1;i<n;i++)
			if(d[i]<d[i+1])
			{
				aux=a[i+1];
				a[i+1]=a[i];
				a[i]=aux;
				aux=d[i+1];
				d[i+1]=d[i];
				d[i]=aux;
				ord=0;
			}
	}while(ord==0);
	do
	{
		ok=1;
		for(i=1;i<=n;i++)
		{
			if(d[i]<=x&&a[i]!=0) 
			{
				lana2=lana2+a[i];
				a[i]=0;
				ok=0;
				break;
			}
		}
		for(i=1;i<=n;i++)
			d[i]=d[i]+l;
	}while(ok==0);
	do
	{
		ord=1;
		for(i=1;i<n;i++)
			if(aa[i]<aa[i+1])
			{
				aux=aa[i+1];
				aa[i+1]=aa[i];
				aa[i]=aux;
				aux=dd[i+1];
				dd[i+1]=dd[i];
				dd[i]=aux;
				ord=0;
			}
	}while(ord==0);
	do
	{
		ok=1;
		for(i=1;i<=n;i++)
		{
			if(dd[i]<=x&&aa[i]!=0) 
			{
				lana=lana+aa[i];
				aa[i]=0;
				ok=0;
				break;
			}
		}
		for(i=1;i<=n;i++)
			dd[i]=dd[i]+l;
	}while(ok==0);
	if(lana2<lana)
	cout<<lana;
	else 
	cout<<lana2;
}