Cod sursa(job #2205502)

Utilizator Vlad_ConstantinVlad Constantin Vlad_Constantin Data 19 mai 2018 13:11:00
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <stdio.h>
#include <iostream>
#define NMAX 10000
using namespace std;
int dp[NMAX+5];
int main()
{
    freopen("rucsac.in","r",stdin);
    freopen("rucsac.out","w",stdout);
    int n,G; scanf("%d%d", &n, &G);
    int i,j,maxi=0;
    int greutate,eficienta;
    for(i=1;i<=n;i++)
    {
        scanf("%d%d", &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;
    }
    int valid=0;
    for(i=G;i>=0&&valid==0;i--)
        if(dp[i]!=0)
        {
            valid=1;
            printf("%d", dp[i]);
        }
    if(valid==0)
        printf("0");
}