Cod sursa(job #2251766)

Utilizator sebi110Ciobanu Sebastian sebi110 Data 1 octombrie 2018 22:17:36
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <iostream>

using namespace std;

long long n,Gmax,i,j,pd[3][10001],W[5001],P[5001],ans,act,ant;

int main()
{
    ios::sync_with_stdio(false);
    freopen("rucsac.in","r",stdin);
    freopen("rucsac.out","w",stdout);
    cin>>n>>Gmax;
    for(i=1; i<=n; i++)
    {
        cin>>W[i]>>P[i];
    }
    for(i=1; i<=n; i++)
    {
        act=i%2;
        ant=1-(i%2);
        for(j=1; j<W[i]; j++)
            pd[act][j]=pd[ant][j];
        for(j=W[i]; j<=Gmax; j++)
            pd[act][j]=max(pd[ant][j],pd[ant][j-W[i]]+P[i]);
    }
    ans=0;
    act=n%2;
    for(i=1;i<=Gmax;i++)
        ans=max(ans,pd[act][Gmax]);
    cout<<ans<<'\n';
    return 0;
}