Cod sursa(job #52104)

Utilizator crawlerPuni Andrei Paul crawler Data 17 aprilie 2007 19:22:54
Problema Energii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <stdio.h>
#define Inf  (1<<18)

int v[30002];

int main()
 {
  freopen("energii.in","r",stdin);
  freopen("energii.out","w",stdout);

  int n,s, min = Inf, i,j,a,b;

  scanf("%d%d", &n, &s);

  for(i=1;i<=n;++i)
   {
    scanf("%d%d", &a,&b);

    for(j=10000-a;j>=0;--j)
     if(v[j])
      {
       if((v[j+a] == 0) || (v[j+a] <= v[j]+b))
        v[j+a] = v[j] + b;
      }
    if((v[a] == 0) || (v[a] <= b))
     v[a] = b;
   }

  for(i=s;i<=30000;++i)
   if(v[i] && v[i] < min)
    min = v[i];

  if(min != Inf)
   printf("%d\n", min);
    else
   printf("-1\n");

  return 0;
 }