Cod sursa(job #2205515)

Utilizator Vlad_ConstantinVlad Constantin Vlad_Constantin Data 19 mai 2018 13:43:56
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <stdio.h>
#include <iostream>
#define NMAX 15000
using namespace std;
int dp[NMAX+1];
int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    int n,w; scanf("%d%d", &n, &w);
    int i,j,maxi=0;
    int energie,cost;
    for(i=1;i<=n;i++)
    {
        scanf("%d%d", &energie, &cost);
        for(j=maxi;j>=0;j--)
            if(dp[j]!=0 && j+energie<=15000)
                dp[j+energie]=max(dp[j+energie],dp[j]+cost);
        dp[energie]=max(dp[energie],cost);
        if(maxi+energie>15000)
            maxi=15000;
        else
            maxi=maxi+energie;

    }
    int valid=0;
    for(i=0;i<=maxi&&valid==0;i++)
        if(dp[i]>=w)
        {
            valid=1;
            printf("%d ", dp[i]);
        }
    if(valid==0)
        printf("-1");

}