Cod sursa(job #288358)

Utilizator flamecataCiobanu Alexandru-Catalin flamecata Data 25 martie 2009 19:00:12
Problema Energii Scor 100
Compilator cpp Status done
Runda aa Marime 0.91 kb
#include<stdio.h>   
#define INF 10000002   
  
int e[1002],c[1002],v[5002],i,n,w,sumc,p,j;   
  
  
int min(int a, int b){   
  return a<b?a:b;   
}   
  
  
int main(){   
freopen("energii.in","r",stdin);   
freopen("energii.out","w",stdout);   
  scanf("%i%i",&n,&w);   
  for(i=1;i<=n;i++){   
    scanf("%i%i",&e[i],&c[i]);   
    sumc+=e[i];   
  }   
  if(sumc<w) {   
    printf("%i",-1);   
  }   
  else{   
    v[0]=0;   
    for (i=1;i<=w;i++) v[i] = INF;   
    p=0;   
  
    for(i=1;i<=n;i++)     //v[j] = costul minim de a obtine cant j de energie   
      for(j=p;j>=0;j--)   
        if(v[j]!=INF)   
            if (v[min(j+e[i],w)]>v[j]+c[i])    
            {   
              if (p<min(j+e[i],w))  p = min(j+e[i],w);   
              v[min(j+e[i],w)]=v[j]+c[i];   
            }   
    printf("%i",v[w]);   
  }   
fclose(stdin);   
fclose(stdout);   
return 0;   
}