Cod sursa(job #2930248)

Utilizator andreipirjol5Andrei Pirjol andreipirjol5 Data 27 octombrie 2022 20:17:33
Problema Energii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <cstdio>
#include <iostream>

using namespace std;
FILE *fin, *fout;

int g, w;

const int NMAX = 1000;
int e[NMAX + 2], c[NMAX + 2];
int dp[NMAX + 2][5002];

int main()
{
    fin = fopen("energii.in", "r");
    fout = fopen("energii.out", "w");

    fscanf(fin, "%d%d", &g, &w);

    for(int i = 1; i <= g; i++)
        fscanf(fin, "%d%d", &e[i], &c[i]);

    for(int i = 1; i <= g; i++)
        dp[0][i] = 0;

    for(int i = 1; i <= w; i++)
    {
        for(int j = 1; j <= g; j++)
        {
            if(i < e[j])
            {
                dp[i][j] = dp[i - 1][j];
                continue;
            }

            if(dp[i - 1][j])
                dp[i][j] = min(dp[i - 1][j], dp[i - e[j]][j] + c[j]);
            else dp[i][j] = dp[i - e[j]][j] + c[j];
        }
    }

    fprintf(fout , "%d" , dp[w][g]);
    /*
    for(int i = 1; i <= w; i++)
    {
        for(int j = 1; j <= g; j++)
            fprintf(fout, "%d ", dp[i][j]);

        fprintf(fout, "\n");
    }
*/

    fclose(fin);
    fclose(fout);
    return 0;
}