Pagini recente » Cod sursa (job #1305926) | Cod sursa (job #2543995) | Cod sursa (job #517883) | Cod sursa (job #2987684) | Cod sursa (job #1050811)
#include <stdio.h>
using namespace std;
struct generare
{
int prod,nec;
};
generare v[1005];
int en[20000];
int min(int x, int y)
{
int min;
if (x<y)
min=x;
else
min=y;
return min;
}
int main()
{
FILE *in,*out;
in=fopen("energii.in","r");
out=fopen("energii.out","w");
int n,w,fl=0;
fscanf(in,"%d%d",&n,&w);
int i,j;
for (i=1;i<=n;i++)
fscanf(in,"%d%d",&v[i].prod,&v[i].nec);
for (i=1;i<=w+10005;i++)
en[i]=1000000000;
for (i=1;i<=n;i++)
for (j=w+10005;j>=0;j--)
if (en[j]!=1000000000)
en[j+v[i].prod]=min(en[j+v[i].prod],en[j]+v[i].nec);
/*
for(j=0 ; j<=w ; j++)
fprintf(out,"(%d, %d) ",j,en[j]);
*/
int minim=1000000000;
for (i=w;i<=w+10005;i++)
if (en[i]!=1000000000)
{
if (minim>en[i])
minim=en[i];
fl=1;
}
if (fl==0)
fprintf(out,"-1");
else
fprintf(out,"%d ",minim);
return 0;
}