Cod sursa(job #2710475)

Utilizator andrei_marciucMarciuc Andrei andrei_marciuc Data 22 februarie 2021 16:49:12
Problema Energii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <stdio.h>
#define MAX 1000000
int v[ 1001 ], p[ 1001 ];
int dp[ 2 ][ MAX ];
int g, w;

int max( int a, int b ){
    if( a >= b )
        return a;
    return b;
}

int main()
{
    FILE *fin = fopen( "energii.in", "r" );
    fscanf( fin, "%d%d", &g, &w );
    for( int i = 1; i <= g; i++ )
        fscanf( fin, "%d %d", &v[ i ], &p[ i ] );
    fclose( fin );
    for( int i = 1; i <= g; i++ )
        for( int j = p[ i ]; j <= MAX; j++ )
            dp[ i & 1 ][ j ] = max( dp[ i & 1 ][ j ], dp[ 1 - ( i & 1 ) ][ j - p[ i ] ] + v[ i ] );
    int i = 1;
    while( i <= MAX && dp[ g & 1 ][ i ] < w )
        ++i;
    FILE *fout = fopen( "energii.out", "w" );
    fprintf( fout, "%d\n", i );
    fclose( fout );
    return 0;
}