Cod sursa(job #2184)

Utilizator RazvanSSavu Razvan RazvanS Data 16 decembrie 2006 11:22:00
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
 #include <fstream>
using namespace std;


const int MaxN = 1001, MaxS = 5001;

int   N, S, v[MaxN], cost[MaxN];
int   c[MaxS];
int   Minim = 999999999;


void ReadData(void)
{
	ifstream fin("energii.in");

	fin >> N >> S;
	for (int k=1; k<=N; ++k)
		fin >> v[k] >> cost[k];

	fin.close();
}

int main(void)
{
	int i, j, k;

	ReadData();

	for (j=1; j<=S; ++j) c[j] = -1;
	c[0] = 0;

	for (i=1; i<=N; ++i)
		for (j=S-1; j>=0; --j)
			if (c[j] != -1)
			{
				if (j + v[i] >= S)
					if (Minim > c[j] + cost[i])
						Minim = c[j] + cost[i];
				if (j + v[i] < S)
					if (c[j + v[i]] > c[j] + cost[i] || c[j + v[i]] == -1)
						c[j + v[i]] = c[j] + cost[i];
			}

	ofstream fout("energii.out");
	if (Minim == 999999999)
		fout << -1;
	else
		fout << Minim ;
	fout.close();

	return 0;
}