Pagini recente » Cod sursa (job #436343) | Cod sursa (job #1069404) | Cod sursa (job #771332) | Cod sursa (job #1291588) | Cod sursa (job #3132875)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
FILE *f=NULL;
int n,v[3][10005],g[1001],val[1001],gmax;
memset(v,0,sizeof(v));
if((f=fopen("rucsac.in","r"))==NULL)
{
perror(NULL);
exit(-1);
}
fscanf(f,"%d %d",&n,&gmax);
for(int i=1;i<=n;i++)
{
fscanf(f,"%d %d",&g[i],&val[i]);
}
if(fclose(f)!=0)
{
perror(NULL);
exit(-1);
}
for(int j=1;j<=gmax;j++)
if(j<g[1])
v[1][j]=0;
else
{
int v2=val[1];
v[1][j]=v2;
}
for(int i=2;i<=n;i++)
for(int j=1;j<=gmax;j++)
{
if(j<g[i])
v[2][j]=v[1][j];
else
{
int v1=v[1][j];
int v2=val[i]+v[1][j-g[i]];
if(v1>v2)
v[2][j]=v1;
else
v[2][j]=v2;
}
for(int h=1;h<=gmax;h++)
v[1][h]=v[2][j];
}
if((f=fopen("rucsac.out","w"))==NULL)
{
perror(NULL);
exit(-1);
}
fprintf(f,"%d",v[2][gmax]);
if(fclose(f)!=0)
{
perror(NULL);
exit(-1);
}
return 0;
}