Pagini recente » Cod sursa (job #182323) | Cod sursa (job #760559) | Cod sursa (job #875505) | Cod sursa (job #2168067) | Cod sursa (job #372028)
Cod sursa(job #372028)
#include<stdio.h>
const int gmax=1001;
int wmax=5001;
int min=30,nim=30;
int w,g[5001],c[5001],n,rez[5001],u[5001],i,j,tot;
int main()
{
FILE *in=fopen("energii.in","r");
FILE *out=fopen("energii.out","w");
fscanf(in,"%d %d",&n,&w);
for(i=1;i<=n;i++)
fscanf(in,"%d %d",&g[i],&c[i]);
for(i=0;i<=2*w;i++)rez[i]=min;
rez[0]=0;
u[0]=1;
for(i=1;i<=n;i++)
for(j=w;j>=0;j--)
{
if(u[j]&&rez[j]+c[i]<rez[j+g[i]])
{
u[j+g[i]]=1;
rez[j+g[i]]=rez[j]+c[i];
if(j+g[i]>tot)tot=j+g[i];
}
}
for(i=tot;i>=w;i--)
if(rez[i]<min)min=rez[i];
if(min==nim)fprintf(out,"-1\n");
else fprintf(out,"%d\n",min);
return 0;
}