Cod sursa(job #1412611)

Utilizator MailatMailat Radu Mailat Data 1 aprilie 2015 13:13:31
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <fstream>
#include <algorithm>
#define MAXW 5002
#define MAXN 1002
using namespace std;

ifstream fin("energii.in");
ofstream fout("energii.out");

int V[MAXN][MAXW];
int C[MAXN], P[MAXN];
int main()
{
    int n, g;

    fin >> n >> g;

    for(int i = 1; i <= n;i++)
    {
        fin >> P[i] >> C[i];
    }
    fin.close();
    for(int i = 0; i <= g; i++)
    {
        V[0][i] = 0;
    }
    for(int i = 1; i <= n; i ++)
    {
        for(int j = 1; j <= g; j++)
        {
            if(P[i] >= j)
            {
                if(V[i-1][j] != 0)
                {
                    V[i][j] = min(C[i], V[i-1][j]);
                }
                else
                {
                    V[i][j] = C[i];
                }
            }
            else
            {
                if(V[i-1][j - C[i]] == 0)
                {
                    V[i][j] = 0;
                }
                else
                {
                    V[i][j] = C[i] + V[i-1][j-C[i]];
                }
            }
        }
    }
    if(V[n][g] == 0)
    {
        V[n][g] = -1;
    }
    fout << V[n][g];
    fout.close();

    return 0;
}