Cod sursa(job #2205498)

Utilizator Vlad_ConstantinVlad Constantin Vlad_Constantin Data 19 mai 2018 13:02:18
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb

#include <iostream>
#include <cstdio>
using namespace std;
long long dp[10005];
int main()
{
    freopen("rucsac.in","r",stdin);
    freopen("rucsac.out","w",stdout);
    long long n,G; cin>>n>>G;
    long long i,j,maxi=0;
    long long greutate,eficienta;
    for(i=1;i<=n;i++)
    {
        cin>>greutate>>eficienta;
        for(j=maxi;j>=1;j--)
            if(dp[j]!=0 && j+greutate<=G)
                dp[j+greutate]=max(dp[j+greutate],dp[j]+eficienta);
        dp[greutate]=max(dp[greutate],eficienta);
        if(maxi+greutate>G)
            maxi=G;
        else
            maxi=maxi+greutate;
    }
    for(i=G;i>=0;i--)
        if(dp[i]!=0)
        {
            cout<<dp[i];
            return 0;
        }
}