Pagini recente » Cod sursa (job #2749025) | Cod sursa (job #61328) | Cod sursa (job #1580343) | Cod sursa (job #2866392) | Cod sursa (job #365548)
Cod sursa(job #365548)
#include <cstdio>
#include <string>
#define DIM 10005
#define INF 0x3f3f3f3f
using namespace std;
int sum, n, g[DIM], price[DIM], Cmax[DIM], j, i, use[DIM];
int total, rez;
void read()
{
scanf ("%d%d\n",&n,&sum);
for (i = 1; i <= n; i++) scanf("%d %d\n", &g[i], &price[i]);
}
void knap_si_sack()
{
memset ( Cmax, INF, sizeof (Cmax) );
Cmax[0] = 0;
use[0] = 1;
for (i = 1; i <= n; i++)
for ( j = sum; j >= 0; j--)
{
if ( use[j] && Cmax[j] + price[i] < Cmax[ j + g[i] ] )
{
Cmax[ j + g[i] ] = Cmax[j] + price[i], use[ j + g[i] ] = 1;
if ( j + g[i] > total ) total = j + g[i] ;
}
}
rez = INF;
for (i = total; i >= sum; i--)
if ( Cmax[i] < rez ) rez = Cmax[i];
if ( rez != INF ) printf ("%d\n", rez);
else printf ("-1\n");
}
int main()
{
freopen ("energii.in","r",stdin);
freopen ("energii.out","w",stdout);
read();
knap_si_sack(); // :)
return 0;
}