Cod sursa(job #488910)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 30 septembrie 2010 16:17:42
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<stdio.h>
#define inf 1<<29

FILE*f=fopen("energii.in","r");
FILE*g=fopen("energii.out","w");

int N,S,e[1024],c[1024],cost[5500],i,j;

int main () {
	
	fscanf(f,"%d%d",&N,&S);
	
	for ( i = 1 ; i <= N ; ++i )
		
		fscanf(f,"%d%d",&e[i],&c[i]);
	
	cost[0] = 1 ;
	
	for ( i = 1 ; i <= S ; ++i )
		cost[i] = inf;
	
	for ( i = 1 ; i <= N ; ++i ){
		
		for ( j = S ; j >= 0 ; --j ) {
			
			if ( cost[j] != inf ){
				
				if ( j + e[i] <= S ){
					if( cost[ j + e[i] ] > c[i] + cost[j] )
						cost[ j + e[i] ] = c[i] + cost[j];
				}
				else
					if ( cost[ S ] > c[i] + cost[j] )
						cost[ S ] = c[i] + cost[j];
				
			}				
			
		}
		
	}
	
	if ( cost[S] !=inf )
		fprintf(g,"%d\n",cost[S] - 1);
	else
		fprintf(g,"-1\n");
	
	fclose(f);
	fclose(g);
	
	return 0;
	
}