Cod sursa(job #1320930)

Utilizator nacrocRadu C nacroc Data 18 ianuarie 2015 17:57:48
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <stdio.h>
#include <algorithm>
#define NMAX 1001
#define inf 1<<30

using namespace std;

int E[NMAX],C[NMAX];
int sol[NMAX/2];

int main(){
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    int n,w,s=0;
    scanf("%d",&n);
    scanf("%d",&w);
    for(int i=1;i<=n;++i){
        scanf("%d %d",&E[i],&C[i]);
        s+=E[i];
    }
    if(s<w) printf("-1\n");
    else{
        for(int i=1;i<=w;++i)
            sol[i]=inf;
        for(int i=1;i<=n;++i)
            for(int j=w;j>=0;--j)
                if(E[i]<=j){
                    if(sol[j]>C[i]+sol[j-E[i]])
                        sol[j]=C[i]+sol[j-E[i]];
                }
                else
                    sol[j]=min(sol[j],C[i]);
        printf("%d\n",sol[w]);
    }
    return 0;
}