Cod sursa(job #1569074)

Utilizator starlingIon Popa starling Data 14 ianuarie 2016 22:27:14
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <bits/stdc++.h>

using namespace std;
int w[6000],p[6000],dp[2][10009];
ifstream in("rucsac.in");
ofstream out("rucsac.out");
int main()
{
    int g,n;
    in>>n>>g;
    for(int i=1;i<=n;i++)
        in>>w[i]>>p[i];
    dp[0][w[1]]=p[1];
    int act=0;
    int last=1;
     for(int i=2;i<=n;i++)
        {   swap(act,last);
            for(int s=w[i];s<=g;s++)
         {   dp[act][s]=dp[last][s];
             if(s==w[i])dp[act][s]=max(dp[act][s],p[i]);
             if(dp[last][s-w[i]])
             dp[act][s]=max(dp[act][s],dp[last][s-w[i]]+p[i]);
         }
        }
    int ans=-1;
    for(int i=0;i<=g;i++)
        ans=max(ans,dp[act][i]);
    out<<ans;

    return 0;
}