Cod sursa(job #1320917)

Utilizator nacrocRadu C nacroc Data 18 ianuarie 2015 17:37:28
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <stdio.h>
#define NMAX 1001

using namespace std;

int E[NMAX],C[NMAX];
int sol[NMAX][5*NMAX];

int main(){
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    int n,w,s=0;
    scanf("%d",&n);
    scanf("%d",&w);
    for(int i=1;i<=n;++i){
        scanf("%d %d",&E[i],&C[i]);
        s+=E[i];
    }
    if(s<w) printf("-1\n");
    else{
        for(int i=1;i<=n;++i)
            for(int j=1;j<=w;++j)
                if(E[i]<=j)
                    if(C[i]+sol[i-1][j-E[i]]>sol[i-1][j])
                        sol[i][j]=C[i]+sol[i-1][j-E[i]];
                    else
                        sol[i][j]=sol[i-1][j];
                else
                    sol[i][j]=sol[i-1][j];
        printf("%d\n",sol[n][w]);
    }
    return 0;
}