Cod sursa(job #333783)

Utilizator points_hunterAdrian Dobrescu points_hunter Data 23 iulie 2009 20:46:55
Problema Energii Scor 5
Compilator c Status done
Runda Arhiva de probleme Marime 0.6 kb
#include<stdio.h>

int main(){
  int i,j;
  int W,n,w[1001],c[1001],v[5001]={0};
  freopen("energii.in","r",stdin);
  freopen("energii.out","w",stdout);
  scanf("%d%d",&n,&W);
  for(i=1;i<=n;i++)
    scanf("%d%d",&w[i],&c[i]);
  v[0]=1;
  v[W]=0x3f3f3f3f;
  for(i=1;i<=n;i++)
    for(j=W-1;j>=0;j--)
      if(v[j]){
        if(j+w[i]>=W && v[j]+c[i]<v[W])
          v[W]=v[j]+c[i];
        else
          if(w[j+w[i]]){
	    if(v[j]+c[i]<v[j+w[i]]) 
	      v[j+w[i]]=v[j]+c[i];
	  }
	  else
	    v[j+w[i]]=v[j]+c[i];
      }
  if(v[W]!=0x3f3f3f3f)
    printf("%d",v[W]-1);
  else
    printf("-1");
  return 0;
}