Cod sursa(job #1726070)

Utilizator cella.florescuCella Florescu cella.florescu Data 7 iulie 2016 10:45:27
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <cstdio>
#define MAXENER 10000
#define INF 2000000000

using namespace std;

int v[MAXENER+1];

int main()
{
    FILE *fin, *fout;
    int g, w, e, c, i, j, lim;
    for(i=1; i<=MAXENER; i++)
      v[i]=INF;
    fin=fopen("energii.in", "r");
    fscanf(fin, "%d%d", &g, &w);
    lim=0;
    for(i=0; i<g; i++){
      fscanf(fin, "%d%d", &e, &c);
      if(lim+e<=MAXENER)
        lim+=e;
      else
        lim=MAXENER;
      for(j=lim; j>=e; j--)
        if(v[j]>v[j-e]+c)
          v[j]=v[j-e]+c;
    }
    fclose(fin);
    c=INF;
    for(i=w; i<=MAXENER; i++)
      if(v[i]<c)
        c=v[i];
    if(c==INF)
      c=-1;
    fout=fopen("energii.out", "w");
    fprintf(fout, "%d\n", c);
    fclose(fout);
    return 0;
}