Cod sursa(job #141251)

Utilizator eddieOlariu Eduard Iuliu eddie Data 22 februarie 2008 22:05:37
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<stdio.h>  
int main(){  
int eg[10002],cg[10002],g,w,i,j,cost[100000];  
freopen("energii.in","r",stdin);  
freopen("energii.out","w",stdout);  
     scanf("%d%d",&g,&w);  
     for(i=1;i<=g;++i)  
         scanf("%d%d",&eg[i],&cg[i]);  
     for(i=1;i<=w;i++)  
         cost[i]=100000;  
     for(i=1;i<=g;++i){  
         for(j=w-1;j>0;--j)  
             if(j+eg[i]>w)  
                 if(cg[i]+cost[j]<cost[w])  
                    cost[w]=cost[j]+cg[i];  
                else;  
             else  
                 if(cg[i]+cost[j]<cost[j+eg[i]])  
                     cost[j+eg[i]]=cost[j]+cg[i];  
         if(cg[i]<cost[eg[i]])  
             cost[eg[i]]=cg[i];  
     }  
     if(cost[w]==100000)  
        printf("-1\n");  
    else  
        printf("%d\n",cost[w]);  
    fclose(stdin);  
     fclose(stdout);  
     return 0;  
}