Cod sursa(job #677951)

Utilizator Cosmin1490Balan Radu Cosmin Cosmin1490 Data 10 februarie 2012 20:35:47
Problema Energii Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
using namespace std;

#define NMAX 1002
#define SMAX 5002

#define INF 0x3FFFFFFF

const char infile[] = "energii.in";
const char outfile[] = "energii.out";


int M[SMAX];

int Energy[NMAX];
int Cost[NMAX];

int N;
int S;

int Minimum;

void Solve() 
{
	for(int i = 1 ; i < SMAX; ++i)
	{
		M[i] = INF;
	}

	for(int i = 0 ; i < N; i++)
	{
		for(int j = S; j >= 0; --j)
		{
			if( M[j] != INF)
			{
				if( j + Energy[i] >= S)
				{
					M[S] = min( M[j] + Cost[i]  , M[S]);
				}
				else
				{
					M[j + Energy[i]] = min(M[j] + Cost[i], M[j + Energy[i]]);
				}

			}
		}
	}
	Minimum = M[S];
}

int main(int argc, char* argv[])
{
	fstream fin(infile, ios::in);
	
	fin >> N;
	fin >> S;

	for(int i = 0 ; i < N; ++i)
	{
		fin >> Energy[i] >> Cost[i];
	}

	fin.close();


	Solve();


	fstream fout(outfile, ios::out);

	fout << Minimum << "\n";

	fout.close();

}