Cod sursa(job #2375044)

Utilizator stefan1anubystefan popa stefan1anuby Data 7 martie 2019 22:00:37
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <iostream>

using namespace std;
#define INF 9999999
struct inf
{
    int p,g;
}v[5005];

int g,n,dp[5005];
void read()
{
    int i;
    cin>>n>>g;
    for(i=1;i<=n;i++)
    {
        cin>>v[i].g>>v[i].p;
    }
}
void solve()
{
    int i,j,sol;
    for(i=1;i<=g;i++)
        dp[i]=INF;
    for(i=1;i<=n;i++)
        for(j=g;j>=0;j--)
    {
        if(dp[j]!=INF)
        {
            if(dp[j+v[i].g]==INF) dp[j+v[i].g]=dp[j]+v[i].p;
            else
            dp[j+v[i].g]=max(dp[j+v[i].g],dp[j]+v[i].p);
        }
    }
    sol=0;
    for(i=1;i<=g;i++)
        if(dp[i]!=INF) sol=max(sol,dp[i]);
    cout<<sol;
}
int main()
{
   read();
   solve();
    return 0;
}