Cod sursa(job #1104525)

Utilizator otnielMercea Otniel otniel Data 10 februarie 2014 20:47:11
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<iostream>
using namespace std;
#include<stdio.h>
FILE *f,*d;
int c[1001],g[1001],cmax[5001],uz[5001][1001],i,n,gmax,cost,s;
int main()
{
    f=fopen("rucsac.in","r");
    d=fopen("rucsac.out","w");
    fscanf(f,"%d%d",&n,&gmax);
    for(i=1;i<=n;i++)
        fscanf(f,"%d%d",&g[i],&c[i]);
    for(i=1;i<=gmax;i++)
        cmax[i]=-1;
    for(s=1;s<=gmax;s++)
        for(i=1;i<=n;i++)
        if(g[i]<=s&&cmax[s-g[i]]!=-1&&uz[s-g[i]][i]==0)
          if(cmax[s]<c[i]+cmax[s-g[i]])
    {

        cmax[s]=c[i]+cmax[s-g[i]];
        for(int k=1;k<=n;k++)
            uz[s][k]=uz[s-g[i]][k];
        uz[s][i]=1;
    }
    if(cmax[gmax]==-1)
        fprintf(d,"-1");
    else
    {
        fprintf(d,"%d",cmax[gmax]);
    }


}