Cod sursa(job #1449795)

Utilizator gheorghehagiGheorghe Hagi gheorghehagi Data 10 iunie 2015 16:51:00
Problema Energii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<cstdio>
struct generator{int e, c;};
generator v[1001];
int cost[15001];
int main(){
    int i,n,w,g,j,max,min;
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    scanf("%d%d",&g,&w);
    max=0;
    for(i=1;i<=g;i++){
        scanf("%d %d",&v[i].e,&v[i].c);
        if(v[i].e>max)
            max=v[i].e;
    }
    n=w+max;
    for(i=1;i<=g;i++){
        for(j=n;j>=1;j--)
            if(cost[j]!=0)
                if(j+v[i].e<=n)
                    if(cost[j+v[i].e]==0)
                       cost[j+v[i].e]=cost[j]+v[i].c;
                    else
                    if(cost[j]+v[i].c<cost[j+v[i].e])
                        cost[j+v[i].e]=cost[j]+v[i].c;

        if(cost[v[i].e]==0)
            cost[v[i].e]=v[i].c;
        else
            if(cost[v[i].e]>v[i].c)
                cost[v[i].e]=v[i].c;



    }
    i=w;
    int pp=0;
    min=2147000000;
    while(i<=n){
        if(min>cost[i]&&cost[i]!=0){
            pp=1;
            min=cost[i];
        }
        i++;
    }
    if(pp==0)
        printf("-1");
    else
        printf("%d",min);
    return 0;
    }