Cod sursa(job #2700653)

Utilizator Ana_22Ana Petcu Ana_22 Data 28 ianuarie 2021 12:43:54
Problema Energii Scor 10
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <stdio.h>
#include <stdlib.h>
#define NMAX 1000
#define WMAX 5000

int e[NMAX+1], c[NMAX+1];
int cost[WMAX+1];

int main() {
    FILE *fin, *fout;
    int n, w, se, sc, i, j, g;

    fin = fopen( "energii.in", "r" );
    fscanf( fin, "%d%d", &n, &w );
    se = sc = 0;
    for( i = 1; i <= n; i++ ) {
      fscanf( fin, "%d%d", &e[i], &c[i] );
      se += e[i];
      sc += c[i];
    }
    fclose( fin );

    fout = fopen( "energii.out", "w" );
    if( se < w )
      fprintf( fout, "-1\n" );
    else {
      for( i = 1; i <= w; i++ )
        cost[i] = 1000000l;
      for( i = 1; i <= n; i++ ) {
        for( j = 0; j <= w; j++ ) {
          g = j + e[i] > w ? w : j + e[i];
          if( cost[g] > cost[j] + c[i] )
            cost[g] = cost[j] + c[i];
        }
      }
      fprintf( fout, "%d\n", cost[w] );
    }
    fclose( fout );
    return 0;
}