Cod sursa(job #229308)

Utilizator thetickTica Stefan Nicolae thetick Data 9 decembrie 2008 21:19:58
Problema Lupul Urias si Rau Scor 28
Compilator c Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>
#include <stdlib.h>

unsigned long v[100000],rmax[100000],s,x,n,l,ln,d;
long r[100000],j,i;
int ok;

int main()
{
	FILE *f;

	s=0;
	f=fopen("lupu.in","r");
	fscanf(f,"%lu%lu%lu",&n,&x,&l);
	for(i=0;i<n;i++)
		{
			fscanf(f,"%lu%lu",&d,&v[i]);
			rmax[i]=(x-d)/l;
		}

	d=x/l;
	for(i=0;i<=d;i++)
		r[i]=i;

	for(i=0;i<n-1;i++)
		for(j=i+1;j<n;j++)
			if(v[j]>v[i])
			{
				ln=v[i];
				v[i]=v[j];
				v[j]=ln;
				ln=rmax[i];
				rmax[i]=rmax[j];
				rmax[j]=ln;
			}

	for(i=0;i<n;i++)
	{
		ok=0;

		j=rmax[i];
		while(j>=0 && !ok)
			if(r[j]!=-1)
				ok=1;
			else
				j--;
		if (ok)
		{
			s+=v[i];
			r[j]=-1;
		}
	}

	fclose(f);

	f=fopen("lupu.out","w");
	fprintf(f,"%lu",s);
	fclose(f);

	return 0;
}