Cod sursa(job #1142407)

Utilizator nimicLeoveanu Mihaita Alexandru nimic Data 13 martie 2014 20:21:18
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");

const int MMAX = (1<<26);
int G, w, energ[1005], c[1005], cost[1005][5005];

int main()
{
    int player_unu=0;

    in >> G >> w;
    for(int i = 1; i <= G; i++)
    {
        in >> energ[i] >> c[i];
    }
    for(int j = 0; j <= w; j++)
		cost[0][j] = (1<<30);
    for(int i = 0; i <= G; i++)
		cost[i][0] = (1<<30);

    for(int i = 1; i <= G; i++)
    {
        for(int j = 1; j <= w; j++)
        {
            if(j > energ[i])
            {
                cost[i][j] = min(cost[i - 1][j], cost[i - 1][j - energ[i]] + c[i]);
            }
            else
            {
                cost[i][j] = min(cost[i - 1][j], c[i]);
            }
        }
    }

    if(cost[G][w] != (1 << 30))
    {
        out<<cost[G][w]<<'\n';
    }
    else
    {
        out<<-1<<'\n';
    }

	return player_unu;
}