Cod sursa(job #2203443)

Utilizator stefanchistefan chiper stefanchi Data 12 mai 2018 12:38:25
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <cstdio>

using namespace std;
const int NMAX = 5005;
int vec[NMAX];

void rezolvare()
{
    int n , w ,e ,c;
    scanf("%d %d",&n,&w);
    for(int i = 0 ; i< w ; i++)
        vec[i] = -1;
    for(int i = 0 ; i < n ; i ++)
    {
        scanf("%d %d",&e,&c);
        for(int j = w ; j > 0 ; j--)
        {
            if(vec[j] != -1)
            {
                if( j + e <=  w)
                {
                    if( vec[j+e] == -1  || vec[e+j] > c + vec[j])
                        vec[j+e] = c+vec[j];
                }
            }
            else
                if( vec[w]> c+vec[j] || vec[w] == -1)
                    vec[w] = c+ vec[j];
        }
    }
    printf("%d ",vec[w]);
}


int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    rezolvare();
    return 0;
}