Cod sursa(job #52106)

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

int v[30002];
char x[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);

  x[0] = 1;

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

    for(j=s-a;j>=0;--j)
     if(x[j])
      {
       if((x[j+a] == 0) || (v[j+a] >= v[j]+b))
        v[j+a] = v[j] + b;
        x[j+a] = 1;
      }
   }

  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");

  for(i=0;i<=10;++i)
   printf("%d ", v[i]);

  return 0;
 }