Cod sursa(job #157536)

Utilizator ioanIoan Baceanu ioan Data 13 martie 2008 08:58:00
Problema Lupul Urias si Rau Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include<fstream.h>
unsigned long*a,*d;
long n,x,l,s;

int aranjeaza_pivot(int i, int j)
	{int piv=a[i];
		while(i<j)
			{if (a[i]<a[j]){int aux=a[i];
					a[i]=a[j];
					a[j]=aux;
					d[i]^=d[j]^=d[i]^=d[j];
					}
			if(a[i]==piv) j--;
			else i++;}
	return i;}
void quick_sort(int i, int j)
	{if(i<j)
		{int k=aranjeaza_pivot(i,j);
			quick_sort(i,k-1);
			quick_sort(k+1,j);}
	}

long oaie_selectata()
{long i;
for(i=1; i<=n; i++)
	if(x>=d[i]&&x<d[i]+l&&a[i]!=0) { s=s+a[i];
				a[i]=0;
				return i;}
for(i=1; i<=n; i++)
	if(a[i]!=0&&x>=d[i]){s=s+a[i];
		    a[i]=0;
		    return i;}
return 0;}

void mutare(long i)
	{for(long j=1; j<=n; j++)
		if(a[j]!=0) d[j]=d[j]+l;}




void main()
{int i;
a=new unsigned long[100000];
d=new unsigned long[100000];
if(a==0 || d==0) cout<<"alocare esuata";
ifstream f("lupu.in");
f>>n>>x>>l;
for(i=1; i<=n; i++)
	{f>>d[i];
	f>>a[i];}
quick_sort(1,n);
for(i=1; i<=n; i++)
	{cout<<d[i]<<' '<<a[i];
	cout<<endl;}


i=oaie_selectata();
while(i!=0)
{mutare(i);
i=oaie_selectata();}
cout<<s;
}