Cod sursa(job #2699228)

Utilizator LucaMihaiLM10Luca Ilie LucaMihaiLM10 Data 23 ianuarie 2021 21:32:23
Problema Energii Scor 45
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <stdio.h>
#define MAX_N 1000
#define MAX_G 10000000

int e[MAX_N], c[MAX_N], d[MAX_G + 1];

int main() {
    FILE *fin, *fout;
    int n, g, cost, i, j;

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

    for ( i = 0; i < n; i++ ) {
        for ( j = g; j >= e[i]; j-- )
            d[j] = (d[j - e[i]] + c[i]) > d[j] ? (d[j - e[i]] + c[i]) : d[j];
    }

    fout = fopen( "energii.out", "w" );
    fprintf( fout, "%d", g < 0 ? -1 : cost - d[g] );
    fclose( fout );

    return 0;
}