Cod sursa(job #288048)

Utilizator vlasceanuVlasceanu Razvan vlasceanu Data 25 martie 2009 15:04:09
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 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;
}