Cod sursa(job #3246585)

Utilizator horatiu.avramAvram Popa Cristian Horatiu horatiu.avram Data 3 octombrie 2024 18:17:00
Problema Problema rucsacului Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <stdio.h>
#include <stdlib.h>
#define MAXN 5000
#define VAL (int)1e4
int dp[VAL+1],p[MAXN],c[MAXN];
int main() {
    FILE *fin,*fout;
    int n,s,i,k,max;
    fin=fopen("rucsac.in","r");
    fscanf(fin,"%d%d",&n,&s);
    for(i=0; i<n; i++) {
        fscanf(fin,"%d%d",&c[i],&p[i]);
    }
    for(i=0; i<n; i++) {
        for(k=s; k>c[i]; k--) {
            if(dp[k-c[i]]>0) {
                if(dp[k-c[i]]+p[i]>dp[k]) {
                    dp[k]=dp[k-c[i]]+p[i];
                }
            }
        }
        if(dp[c[i]]<p[i]) {
            dp[c[i]]=p[i];
        }
    }
    fout=fopen("rucsac.out","w");
    max=dp[0];
    for(i=1; i<=s; i++) {
        if(dp[i]>max) {
            max=dp[i];
        }
    }
    fprintf(fout,"%d",max);
    fclose(fout);
    return 0;
}