Cod sursa(job #317483)

Utilizator nicolaetitus12Nicolae Titus nicolaetitus12 Data 23 mai 2009 18:50:22
Problema Energii Scor 90
Compilator c Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <stdio.h>
#define N 15001
#define M 1001
int sum[N];
int cost[M],gen[M];
int n,w;
int main ()
{int i,j,min;
 freopen("energii.in","r",stdin);
 freopen("energii.out","w",stdout);
 scanf("%d %d",&n,&w);
 for (i=0;i<n;i++)
 {scanf("%d %d",&gen[i],&cost[i]);
 }
 for (j=0;j<n;j++)
 {for (i=w-1;i>=0;i--)
  {if(sum[i]&&i+cost[j]<N&&((sum[i+gen[j]]>sum[i]+cost[j])||(sum[i+gen[j]]==0)))
   {sum[i+gen[j]]=sum[i]+cost[j];
   }
  }
  if((sum[gen[j]]>cost[j])||sum[gen[j]]==0)
  {sum[gen[j]]=cost[j];
  }
 }
 
 for (i=w,min=100000000;i<=15000;i++)
 {if(min>sum[i]&&sum[i]!=0)
  {min=sum[i];
  }
 }
 if(min==100000000)printf("-1");
 else printf("%d",min);
 return 0;
}