Cod sursa(job #2310996)

Utilizator ScarymovieMocanu Alexandru Scarymovie Data 2 ianuarie 2019 14:33:24
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>
#include<vector>
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
struct obiect
{
    int w,p;
};
int n,G;
vector<obiect> ob;
vector<vector<int> > dp;
int main()
{
    f>>n>>G;
    ob.resize(n);
    for(int i=0;i<n;++i)
        f>>ob[i].w>>ob[i].p;
    dp.resize(2);
    dp[0].resize(G+1);
    dp[1].resize(G+1);
    for(int i=0;i<=G;++i)
        if(i<ob[0].w)
            dp[0][i]=0;
        else dp[0][i]=ob[0].p;
    for(int j=1;j<n;++j)
    {
      for(int i=0;i<=G;++i)
          if(i<ob[j].w) dp[1][i]=dp[0][i];
          else dp[1][i]=max(dp[0][i],dp[0][i-ob[j].w]+ob[j].p);
      for(int i=0;i<=G;++i)
        dp[0][i]=dp[1][i];
    }
    g<<dp[0][G]<<'\n';
    return 0;
}