Cod sursa(job #1891620)

Utilizator rebecca0312Andrei Rebecca rebecca0312 Data 24 februarie 2017 10:45:54
Problema Problema rucsacului Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include<cstdio>
using namespace std;
const int NMAX=10005;
const int VMAX=205;
int greutate[NMAX*10],profit[VMAX],castig[NMAX/10+5][NMAX],f[NMAX/10+5][NMAX];
int main(){
    freopen("rucsac.in","r",stdin);
    freopen("rucsac.out","w",stdout);
    int n,g,i,j;
    scanf("%d%d", &n, &g);
    for(i=1;i<=n;i++)
        scanf("%d%d", &greutate[i], &profit[i]);
    ///castig[n][g]=castigul maxim
    for(i=1;i<=n;i++){
        for(j=1;j<=g;j++){
            if(greutate[i]<=j){
                if(profit[i]+castig[i-1][j-greutate[i]]>castig[i-1][j]){
                    castig[i][j]=profit[i]+castig[i-1][j-greutate[i]];
                    f[i][j]=i;
                }
                else{
                    castig[i][j]=castig[i-1][j];
                    f[i][j]=f[i-1][j];
                }
            }
            else{
                castig[i][j]=castig[i-1][j];
                f[i][j]=f[i-1][j];
            }
        }
    }
    printf("%d", castig[n][g]);
    return 0;
}