Cod sursa(job #1426832)

Utilizator czlateaZlatea Cezar czlatea Data 30 aprilie 2015 18:39:41
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>
#include <algorithm>
int cost[10005];
int main()
{
  freopen("energii.in","r",stdin);
  freopen("energii.out","w",stdout);
  int n,g,w,p,maxdr=0,maxp,poz=0,s,i,j;
  scanf("%d%d",&n,&g);
  maxdr=1;
    for(i=1; i<=g; i++)
    cost[i]=-1;
  s=0;
  for(i=1; i<=n; i++)
  {
    scanf("%d%d",&w,&p);
    s+=w;
    for(j=maxdr; j>=0; --j)
        if(cost[j+w]!=-1)
        {
            cost[j+w]=std::max(cost[j+w],cost[j]+p);
            if(j+w>maxdr)
                maxdr=j+w;
        }
  }
  if(s<g)
  {
      printf("-1\n");
      return 0;
  }
  int mina = 2000000000, a;
  for(j=g; j<=10000; ++j)
    if(cost[j]<mina&&cost[j]>0)
        {
            mina=cost[j];
            a=j;
        }
  printf("%d\n",a);
  return 0;
}