Cod sursa(job #317517)

Utilizator nicolaetitus12Nicolae Titus nicolaetitus12 Data 23 mai 2009 20:34:34
Problema Energii Scor 90
Compilator c Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <stdio.h>
#define N 15001
#define M 10001
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(i=1;i<=w;i++)sum[i]=100000000;
 for (j=0;j<n;j++)
 {for (i=w-1;i>=1;i--)
  {if(sum[i]!=0)
   {if(i+gen[j]<w)
    {if(sum[i+gen[j]]==0||sum[i+gen[j]]>sum[i]+cost[j])
     {sum[i+gen[j]]=sum[i]+cost[j];
     }
    }
    else
    {if(sum[w]==0||sum[w]>sum[i]+cost[j])
     {sum[w]=sum[i]+cost[j];
     }
    }
   }
  }
  if(cost[j]<w)
  {if(sum[gen[j]]==0||sum[gen[j]]>cost[j])
   {sum[gen[j]]=cost[j];
   }
  }
  else
  {if(sum[w]==0||sum[w]>cost[j])
   {sum[w]=cost[j];
   }
  }
 }
 if(sum[w]==100000000)printf("-1");
 else printf("%d ",sum[w]);
 return 0;
}