Pagini recente » Cod sursa (job #1620324) | Cod sursa (job #1726777) | Cod sursa (job #2850306) | Cod sursa (job #2646927) | Cod sursa (job #47459)
Cod sursa(job #47459)
// Problema energii
// Particularizare a problemei rucsac
#include <stdio.h>
#define NMAX 1001
#define WMAX 5001
#define MAXIM 100000
int G, W;
int E[NMAX], C[NMAX];
long CMin[WMAX][2];
int main()
{
long suma = 0;
long cost = 0, m = 0;
freopen( "energii.in", "rt", stdin );
scanf( "%d", &G );
scanf( "%d", &W );
long i, j;
for( i=1; i<=G; i++ )
{
scanf( "%d %d", &E[i], &C[i] );
suma += E[i];
if( E[i] > m ) m = E[i];
cost += C[i];
}
fclose( stdin );
freopen( "energii.out", "wt", stdout );
if( suma < W )
{
printf( "-1\n" );
fclose( stdout );
return 0;
}
for( i=1; i<=G; i++ ) { CMin[i][0] = E[i]; CMin[i][1] = C[i]; }
for( i=2; i<=G; i++ )
for( j=1; j<i; j++ )
if( ( CMin[i][1] > C[i] + CMin[j][1] ) && ( E[i]+CMin[i][0] < W ) )
{
CMin[i][1] = C[i] + CMin[j][1];
CMin[i][0] = E[i] + CMin[j][0];
}
printf( "%ld\n", CMin[G][1] );
fclose( stdout );
return 0;
}