Cod sursa(job #1412839)

Utilizator MailatMailat Radu Mailat Data 1 aprilie 2015 16:28:47
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>
#include <algorithm>
#include <limits>
#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] = 10002;
    }
    for(int i = 1; i <= n; i ++)
    {
        for(int j = 1; j <= g; j++)
        {
            //V[i][j] = V[i-1][j];
            if(P[i] >= j)
            {
                V[i][j] = min(C[i], V[i-1][j]);

            }
            else
            {
                if(V[i-1][j-P[i]] == 10002)
                {
                    V[i][j] = V[i-1][j];
                }
                else
                {
                    V[i][j] = min(V[i-1][j],C[i] + V[i-1][j-P[i]]);
                }
            }

        }
    }
    if(V[n][g] == 10002)
    {
        V[n][g] = -1;
    }
    fout << V[n][g];
    fout.close();

    return 0;
}