Cod sursa(job #27489)

Utilizator dragomir_andreiDragomir Andrei dragomir_andrei Data 6 martie 2007 14:36:42
Problema Energii Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include<stdio.h>
long int g,w,c,e,p[5000],i,j;
int main()
{
	FILE *f=fopen("energii.in","r");
	fscanf(f,"%ld\n%ld",&g,&w);
	p[w]=1000000000;
	for(j=1;j<=g;j++)
	{fscanf(f,"%ld%ld",&e,&c);
	  if(e>=w) {if(c<p[w]) p[w]=c;}
	  else { for(i=w-e;i<w;i++)
		 if(p[i]) if((p[i]+c)<p[w]) p[w]=p[i]+c;
		 for(i=w-e-1;i>=1;i--)
		 if(p[i]) {if(p[i+e]==0) p[i+e]=p[i]+c;
			   else if((p[i]+c)<p[i+e]) p[i+e]=p[i]+c;
			   }
		 if(p[e]==0)p[e]=c;
		 else if(p[e]>c) p[e]=c;
		}
	}
	fclose(f);
	f=fopen("energii.out","w");
	if(p[w]==1000000000) fprintf(f,"-1\n");
	else fprintf(f,"%ld",p[w]);
	fclose(f);
	return 0;
}