Cod sursa(job #811337)

Utilizator macauaMacaua Online macaua Data 11 noiembrie 2012 22:22:01
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <iostream>
#include <stdio.h>
using namespace std;

int min(int a, int b)
{
	return a > b ? b : a;
}
int max(int a, int b)
{
	return a > b ? a : b;
}

int G, W, EG, CG, D[1001][5001];

int main()
{

	freopen("energii.in", "r", stdin);
	freopen("energii.out", "w", stdout);

	cin>>G>>W;

	for(int i=0;i<=G;++i)
		for(int j=0;j<=W;++j)
			D[i][j] = 10001;
			
	for(int i=1;i<=G;++i)
	{
		cin>>EG>>CG;
		
		for(int j=0;j<=W;++j)
		{
				D[i][j] = D[i-1][j];
	
				if(j >= EG)
					D[i][j] = min(D[i][j], CG + D[i-1][j - EG]);
				else
					D[i][j] = min(D[i][j], CG);
	
		}
	}
	
	if(D[G][W] != 10001)
		cout<<D[G][W]<<"\n";
	else
		cout<<"-1\n";
	
	return 0;
	
}