Cod sursa(job #1089875)

Utilizator TarabanDragosTaraban Dragos-Petru TarabanDragos Data 21 ianuarie 2014 23:57:22
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<cstdio>
#include<cstring>
int n,s,x[10100],y[10100],m[10100],c[10100],i,j,nmax;
FILE *f,*g;
int maxim(int a,int b){
    if(a>b)
        return a;
    else
        return b;
}
int main(){
    f=fopen("rucsac.in","r");
    g=fopen("rucsac.out","w");
    fscanf(f,"%d%d",&n,&s);
    for(i=1;i<=n;i++){
        fscanf(f,"%d%d",&m[i],&c[i]);
    }
    y[m[1]]=c[1];
    for(i=2;i<=n;i++){
        memcpy(x,y,sizeof(y));
        for(j=s;j>=1;j--){
            if(m[i]<j)
                y[j]=maxim(x[j],x[j-m[i]]+c[i]);
            else
                y[j]=x[i];
        }

    }
    for(i=1;i<=s;i++){
        if(y[i]>nmax)
            nmax=y[i];
    }
    fprintf(g,"%d",nmax);
    fclose(f);
    fclose(g);
    return 0;
}