Cod sursa(job #1660863)

Utilizator flibiaVisanu Cristian flibia Data 23 martie 2016 15:07:46
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <iostream>
#include <fstream>

int min(int x, int y)
{
	if(x < y) return x; else return y;
}

using namespace std;

int main()
{
	ifstream fin("energii.in");
	ofstream fout("energii.out");
	int n, G, e[10002], c[10002], a[20002];
	fin >> n >> G;
	for(int i = 1; i <= n; i++)
	{
		fin >> e[i] >> c[i];
	}
	int s = 0;
	for(int i = 1; i <= n; i++) s+=e[i];
	if(s < G)
	{
		fout << "-1";
	}
	else
	{
		for(int i = 1; i <= G; i++) a[i] = 1000000;;
		for(int i = 1; i <= n; i++)
		for(int j = G; j >= 1; j--)
		{
			if(j - e[i] >= 1)
			{
				a[j] = min(a[j], a[j-e[i]] + c[i]);
		    }
		    else
		    {
		    	a[j] = min(a[j], c[i]);
			}
		}	
		fout << a[G];
	}
	return 0;
}