Cod sursa(job #87959)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 29 septembrie 2007 21:34:11
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<stdio.h>

typedef struct
{
  int e, c;
} generator;

generator v[1005];

int e[1000000], c[1000000], n, x, suma;

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

  scanf("%d%d",&n,&x);
  int i, j, min;
  for (i=1; i<=n; i++)
  {
    scanf("%d %d",&v[i].e,&v[i].c);
    suma+=v[i].e;
  }
  if (suma<x){ printf("-1"); return 0;}

  e[0]=1;

  for(i=1; i<=n; i++)
    for (j=suma; j>=0; j--)
      if (e[j]==1)
       {
	 e[j+v[i].e]=1;
	 if (c[j+v[i].e]==0) c[j+v[i].e]+=(v[i].c+c[j]);
	 else if (c[j+v[i].e]>v[i].c) c[j+v[i].e]=v[i].c;
       }


  min=c[suma];

  for (i=x; i<suma; i++)
    if (c[i]<min && c[i]) min=c[i];
  printf("%d",min);
  return 0;
}