Pagini recente » Cod sursa (job #2271216) | Cod sursa (job #591702) | Cod sursa (job #3172735) | Cod sursa (job #1512132) | Cod sursa (job #1888725)
#include<cstdio>
using namespace std;
#define INF (1<<30)
int G, w;
int suma;
struct obiect{
int p, c;
}ob[5010];
int a[1010][5010];
int main()
{
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
scanf("%d %d ",&G,&w);
for(int i=1; i<=G; i++)
{
scanf("%d %d ",&ob[i].p,&ob[i].c);
suma+=ob[i].p;
}
if(suma<w)
{
puts("-1");
}
else
{
for(int i=0; i<=G; i++)
for(int j=0; j<=w; j++)
a[i][j] = INF;
for(int i=1; i<=G; i++)
{
for(int j=0; j<=w; j++)
{
if(j<=ob[i].p)
a[i][j] = (a[i-1][j]<ob[i].c)?a[i-1][j]:ob[i].c;
if(j>ob[i].p)
a[i][j] = (a[i-1][j]<a[i-1][j-ob[i].p] + ob[i].c)?a[i-1][j]:a[i-1][j-ob[i].p] + ob[i].c;
}
}
printf("%d\n",a[G][w]);
}
return 0;
}