Cod sursa(job #396465)

Utilizator yrarBogdan Ionut yrar Data 15 februarie 2010 13:59:14
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<fstream>
using namespace std;

int n, gmin, g[1003], c[1003], uz[3000][1003], cmin[3000];
ifstream fin("energii.in");
ofstream fout("energii.out");

int main()
{
	int i, s, k;
	fin >> n >> gmin;
	for(i=1; i<=n; i++) fin >> g[i] >> c[i];
	for(i=1; i<=gmin; i++) cmin[i] = -1;
	for(s=1; s<=gmin; s++)
	{	for(i=1; i<=n; i++)
			if(g[i]<=s && cmin[s-g[i]]!=-1 && !uz[s-g[i]][i])
				if(cmin[s]==-1 || cmin[s] > c[i] + cmin[s-g[i]])
				{	cmin[s] = c[i] + cmin[s-g[i]];
				    for(k=1; k<=n; k++)
						uz[s][k]=uz[s-g[i]][k];
					uz[s][i]=1;
				}
	}
	fout << cmin[gmin];
	fin.close();
	fout.close();
	return 0;
}