Pagini recente » Cod sursa (job #2406895) | Cod sursa (job #2792986) | Cod sursa (job #1368559) | Cod sursa (job #2275701) | Cod sursa (job #1176080)
#include <stdio.h>
#define G_MAX 1000
#define W_MAX 5000
long long e[ G_MAX ], c[ G_MAX ];
long long rucs[ W_MAX ];
long long min ( long long a, long long b ){
if ( a < b ) return a;
return b;
}
long long trans ( long long a ){
if ( a < 0 ) return 0;
return a;
}
int main()
{
FILE *in = fopen ( "energii.in", "r" );
long long g, w;
fscanf ( in, "%lld%lld", &g, &w );
long long i;
for ( i = 0; i < g; i++ ){
fscanf ( in, "%lld%lld", &e[ i ], &c[ i ] );
}
fclose ( in );
rucs[ 0 ] = 1;
long long j;
for ( i = 0; i < g; i++ ){
for ( j = w; j > 0; j-- ){
if ( rucs[ trans( j - e[ i ] ) ] != 0 ){
if ( rucs[ j ] != 0 ) rucs[ j ] = min( c[ i ] + rucs[ trans( j - e[ i ] ) ], rucs[ j ] );
else rucs[ j ] = c[ i ] + rucs[ trans( j - e[ i ] ) ];
}
}
}
FILE *out = fopen ( "energii.out", "w" );
if ( rucs[ w ] > 0 ) fprintf ( out, "%lld", rucs[ w ] - 1 );
else fprintf ( out, "-1" );
fclose ( out );
return 0;
}