Cod sursa(job #2505804)

Utilizator mascoVlad Facas masco Data 7 decembrie 2019 11:14:09
Problema Problema rucsacului Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
///int dp[i][j];  profitul maxim pentru primele i elemente G==j;
             ///raspuns=dp[N][G];
             ///d[i][j]=max(dp[i][j],dp[i-1][j],dp[i][j-g[i]]+P[i]);
int N,G,i,j;
int p[3000],g[3000];
int dp[3000][3000];
int main()
{
    fin>>N>>G;
    for(i=1;i<=N;i++)
    {
        fin>>g[i]>>p[i];
    }
    for(i=1;i<=N;i++)
    {
        for(j=1;j<=G;j++)
        {
            dp[i][j]=-1;
        }
    }
    for(i=1;i<=N;i++)
    {
        for(j=1;j<=G;j++)
        {
            if(dp[i-1][j-g[i]]!=-1 && j-g[i]>=0)
            {
                dp[i][j]=max(dp[i-1][j],dp[i-1][j-g[i]]+p[i]);
            }
            else
                dp[i][j]=dp[i-1][j];

            ///fout<<dp[i][j]<<" ";
        }
        ///fout<<endl;
    }
    fout<<dp[N][G];
}