Cod sursa(job #831835)

Utilizator DenisONIcBanu Denis Andrei DenisONIc Data 9 decembrie 2012 12:38:18
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <stdio.h>
FILE *f=fopen("rucsac.in","r");
FILE *g=fopen("rucsac.out","w");
long ef[5001],v[5001][3],n,aux,nr,i,j,x,y,gr;
int main()
{
	fscanf(f,"%ld%ld",&n,&gr);
	for (i=1;i<=n;i++)
	{
		fscanf(f,"%ld%ld",&v[i][1],&v[i][2]);
		ef[i]=v[i][2]-v[i][1];
	}
	for (i=1;i<n;i++)
		for (j=i+1;j<=n;j++)
		{
			if (ef[i]<ef[j])
			{
				aux=ef[i];
				ef[i]=ef[i];
				ef[j]=aux;
				
				aux=v[i][1];
				v[i][1]=v[j][1];
				v[j][1]=aux;
				
				aux=v[i][2];
				v[i][2]=v[j][2];
				v[j][2]=aux;
			}
			else if (ef[i]==ef[j] && v[i][2]<v[j][2])
			{
				aux=ef[i];
				ef[i]=ef[i];
				ef[j]=aux;
				
				aux=v[i][1];
				v[i][1]=v[j][1];
				v[j][1]=aux;
				
				aux=v[i][2];
				v[i][2]=v[j][2];
				v[j][2]=aux;
			}
		}
	for (i=1;i<=n;i++)
	{
		if (v[i][1]<=gr)
		{
			gr=gr-v[i][1];
			nr=nr+v[i][2];
			x=v[i][1];
			y=v[i][2];
		}
		else if (v[i][1]<=gr+x && y<v[i][2])
		{
			gr=gr+x-v[i][1];
			nr=nr-y+v[i][2];
			x=v[i][1];
			y=v[i][2];
		}
	}
	fprintf(g,"%ld",nr);
	fclose(f);
	return 0;
}