Cod sursa(job #148031)

Utilizator marinMari n marin Data 3 martie 2008 20:39:14
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <stdio.h>
#define DIM 1002
#define INF 100000000

int c[DIM],e[DIM];
int v[DIM*5];

int n,w,max,i,j;


int func(int x){
  if (x>w) return w;
  else return x;
}


int main(){
  FILE *f = fopen("energii.in","r");
  fscanf(f,"%d %d",&n,&w);
  for (i=1;i<=n;i++)
    fscanf(f,"%d %d",&e[i],&c[i]);
  fclose(f);



  v[0]=0;
  for (i=1;i<=DIM*5-2;i++)
    v[i]=INF;

  for (i=1;i<=n;i++)
    for (j=w;j>=0;j--)
      if ((v[j]!=INF)&&(v[func(j+e[i])]>v[j]+c[i]))
	v[func(j+e[i])] = v[j]+c[i];

  FILE *g = fopen("energii.out","w");
  if (v[w]==INF)
    fprintf(g,"%d",-1);
  else
    fprintf(g,"%d",v[w]);
  fclose(g);

  return 0;
}