Pagini recente » Cod sursa (job #857538) | Cod sursa (job #1792255) | Cod sursa (job #1617995) | Cod sursa (job #2684078) | Cod sursa (job #162519)
Cod sursa(job #162519)
#include <stdio.h>
#define G 1000
#define W 5000
#define INFINIT 10000000
int c[G+1],e[G+1]; //costul si energia fiecarui generator
int a[G*W+1], b[G*W+1];
int g,w;
int main()
{
freopen("energii.in","r",stdin);
scanf("%d%d",&g,&w);
int i,j;
for(i=1;i<=g;++i) scanf("%d%d",&e[i],&c[i]);
fclose(stdin);
for(i=1;i<=W;++i) a[i]=b[i]=INFINIT; //initializez vectorii a,b
for(i=1;i<=g;++i) //pentru fiecare generator
{
for(j=1;j<=W;++j) a[j]=b[j]; //realizez o copie a lui a in b
for(j=0;j<=w;++j)
{
if(b[j+e[i]]>a[j]+c[i])
b[j+e[i]]=a[j]+c[i];
}
}
int minim=b[w];
for(i=w+1;i<=W;++i) if(minim>b[i]) minim=b[i];
if(minim==INFINIT) minim=-1;
freopen("energii.out","w",stdout);
printf("%d\n",minim);
fclose(stdout);
return 0;
}