Pagini recente » Cod sursa (job #396216) | Cod sursa (job #1949736) | Cod sursa (job #2463675) | Cod sursa (job #1782773) | Cod sursa (job #1310733)
#include <stdio.h>
int n,w;
struct str
{
int e;
int g;
}it[1001];
int a[1001][10001];
int max(int a,int b)
{
if(a<b) return b;
return a;
}
int main()
{
freopen ("energii.in","r",stdin);
freopen ("energii.out","w",stdout);
scanf("%d%d",&n,&w);
int val=0;
for(int i=1;i<=n;i++)
{
scanf("%d%d",&it[i].e,&it[i].g);
if(val<it[i].g) val=it[i].g;
}
for(int i=1;i<=n;i++)
{
for(int j=it[i].g;j<=10000;j++)
{
a[i][j]=max(a[i-1][j],a[i-1][j-it[i].g]+it[i].e);
}
}
bool as=0;
for(int i=1;i<=10000;i++)
{
for(int j=1;j<=n;j++)
{
if(a[j][i]>=w)
{
printf("%d\n",i);
as=1;
break;
}
}
if(as==1) break;
}
if(as==0) printf("-1\n");
return 0;
}