Cod sursa(job #1657099)

Utilizator AdrianGotcaAdrian Gotca AdrianGotca Data 20 martie 2016 09:58:51
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <fstream>

using namespace std;

void solve(int,int,int,int);
int n,gmax,G[10005],P[10005],a[3][10005];
int main(){
    freopen("rucsac.in","r",stdin);
    freopen("rucsac.out","w",stdout);
    scanf("%d%d",&n,&gmax);
    for (int i=1;i<=n;i++){
        scanf("%d%d",&G[i],&P[i]);
    }
    for (int i=1;i<=n;i++){
        solve(G[i],P[i],i%2,i);
    }
    printf("%d",a[n%2][gmax]);
}

void solve(int g,int p,int l,int i){
    int l1=1-l;
    for (int j=g;j<=gmax;j++){
        if (j-g>=0){
            a[l][j]=max(a[l1][j],a[l1][j-g]+p);
        }
        else {
            a[l][j]=a[l1][j];
        }
    }
}