Cod sursa(job #819721)

Utilizator paunmatei7FMI Paun Matei paunmatei7 Data 19 noiembrie 2012 17:23:49
Problema Energii Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<stdio.h>
#include<string.h>
long n , sum , d[ 3 ][ 5007 ];
long e[ 1007 ],c[ 1007 ];
int main()
{
	long  i , j ; 
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	scanf("%ld %ld" , &n , &sum);
	for(i = 1 ; i <= n ; ++i )
		scanf("%d %d" , &e[ i ] , &c[ i ]);
	memset( d , 10001 , sizeof( d ) );
	j = 1;
	while(j <= n)
	{
		for(i = 1 ; i <= sum ; ++i ) 
			if(i > e[ j ] && d[ 1 ][ i - e[ j ] ] + c[ j ] < d[ 1 ][ i ])
				d[ 2 ][ i ]= c[ j ] + d[ 1 ][ i - e[ j ] ];
			else
				if( i <= e[ j ] && c[ j ] < d[ 1 ][ i ])
					d[ 2 ][ i ] = c[ j ];
				else
					d[ 2 ][ i ] = d[ 1 ][ i ];
		for(i = 1 ; i <= sum ; ++i )
			d[ 1 ][ i ] = d[ 2 ][ i ];
		j++;
	}
	if(d[ 1 ][ sum ] == 10001)
		printf("-1\n");
	else
		printf("%d\n" , d[ 1 ][ sum ]);
	return 0;
}