Pagini recente » Cod sursa (job #2035492) | Cod sursa (job #1173429) | Cod sursa (job #1883202) | Cod sursa (job #1543576) | Cod sursa (job #338581)
Cod sursa(job #338581)
#include<stdio.h>
#include<string.h>
#define DIM 1001
struct vector
{
int eg,cg;
} v[DIM];
int g,w,a[DIM][5*DIM];
void read ()
{
int i;
scanf("%d%d",&g,&w);
for(i=1;i<=g;++i)
scanf("%d%d",&v[i].eg,&v[i].cg);
}
int min (int x,int y)
{
if(x<y)
return x;
return y;
}
void solve ()
{
int i,j;
for(i=1;i<=v[1].eg;++i)
a[1][i]=v[1].cg;
for(i=2;i<=g;++i)
a[i][1]=min(a[i-1][1],v[i].cg);
for(i=2;i<=g;++i)
for(j=2;j<=w;++j)
if(j>v[i].eg)
{
if(a[i-1][j]!=-1 && a[i-1][j-v[i].eg]!=-1)
a[i][j]=min(a[i-1][j],a[i-1][j-v[i].eg]+v[i].cg);
else if (a[i-1][j-v[i].eg]!=-1)
a[i][j]=a[i-1][j-v[i].eg]+v[i].cg;
}
else
{
if(a[i-1][j]!=-1)
a[i][j]=min(a[i-1][j],v[i].cg);
else
a[i][j]=v[i].cg;
}
printf("%d",a[g][w]);
}
int main ()
{
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
read ();
memset(a,-1,sizeof(a));
solve ();
return 0;
}