Cod sursa(job #977273)

Utilizator bugyBogdan Vlad bugy Data 25 iulie 2013 12:46:01
Problema Energii Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<stdio.h>
#include<string.h>
#define dim 1005
#define dim2 5005
#define oo 0x3f3f3f3f
using namespace std;

int n, EMax, e[ dim ], c[ dim ], CMax[ dim2 ], i, j, MIN = oo;

void read()
{
	FILE *f = fopen("energii.in","r");
	
	fscanf( f,"%d %d", &n, &EMax);
		
	memset(CMax,oo,sizeof(CMax));
	CMax[0] = 0;
	for( i = 1; i <= n; ++i )
		fscanf( f,"%d %d", &e[ i ], &c[ i ]);
	
	fclose( f );
}

void solve()
{	
	for( i = 1; i <= n; ++i )
	{
		for( j = EMax ; j >= 0; --j )
			if( CMax[ j + e[ i ] ] > CMax[ j ] + c[ i ] )
			{
				CMax[ j + e[ i ] ] = CMax[ j ] + c[ i ];
				
				if( j + e[ i ] >= EMax && CMax[ j + e[ i ] ] < MIN )
					MIN = CMax[ j + e[ i ] ];			
			}
	}
}

void print()
{
	FILE *g = fopen("energii.out","w");
	
	if( MIN == oo )
		fprintf( g,"-1\n" );
	else
		fprintf( g,"%d\n", MIN );
	
	fclose( g );
}

int main()
{
	read();
	solve();
	print();

	return 0;
}