Cod sursa(job #433363)

Utilizator dacyanMujdar Dacian dacyan Data 3 aprilie 2010 16:54:29
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
#include <vector>
#define INF 20002
using namespace std;

ifstream fin("energii.in");
ofstream fout("energii.out");


struct {
	int e;
	int v;
}c[INF];

long a[INF];
long n, s;
int i, j, imax;

int main()
{
	fin >> n >> s;
	for ( i = 1; i <= n; i++)
		fin >> c[i].e >> c[i].v;
	fin.close();
	
	for ( i = 0; i <= s; i++)
		a[i] = INF;
	a[c[1].e] = c[1].v;
	a[0] = 0;
	
	for ( j = 1; j <= n; j++)
		for ( i = 0; i <= s; i++)	
			if ( a[i] != INF)
				if ( i + c[j].e < s)
				{
					if ( a[i+c[j].e] > a[i] + c[j].v)
						a[i+c[j].e] = a[i] + c[j].v;
				}
				else if ( i + c[j].e >= s)
						if ( a[s] > a[i+c[j].e] + c[j].v)
							a[s] = a[i+c[j].e] + c[j].v;
				
	
	if ( a[s] == INF) fout << '-1' << '\n'; 
	else fout << a[s] << '\n';
	fout.close();
	return 0;
}