Cod sursa(job #277290)

Utilizator Addy.Adrian Draghici Addy. Data 11 martie 2009 17:01:20
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <stdio.h>
#define DIM 100002
#define INF 10002

long v[DIM],c[DIM],s[DIM];
long n,w,i,j,pMax,min;

  FILE *f = fopen("energii.in", "r");
  FILE *g = fopen("energii.out", "w");

int main(){

  fscanf(f,"%ld %ld",&n,&w);

  for (i=1; i<=n; i++)
    fscanf(f,"%ld %ld",&v[i],&c[i]);

  for (i=1; i<=5001; i++)
    s[i] = INF;

  pMax = 0;

  for (i=1; i<=n; i++)
    for (j=pMax; j>=0; j--) {
      if (s[j]!=INF) {
	if (s[j+v[i]] > s[j]+c[i])
	  s[j+v[i]] = s[j]+c[i];
      }
      if (j+v[i] > pMax)
	pMax = j+v[i];
    }

  min = INF;

  for (i=1; i<=5001; i++)
    if (s[i] < min  && s[i] >= w)
      min = s[i];

  fprintf(g,"%ld",min);

  fclose(f);
  fclose(g);

  return 0;
}