Cod sursa(job #507789)

Utilizator Chip93Radu Ciprian Chip93 Data 6 decembrie 2010 19:47:40
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
using namespace std;

const int INF  = 1<<30;
const int W  = 1<<15;

int n,c;
struct generator
{
	int e,c;
};
ifstream in("energii.in");
ofstream out("energii.out");
generator v[1001];
int das[W];

void scrie()
{
	for(int i=1 ; i <=12 ; ++i)
		out<<das[i]<<" ";
	out<<"\n";
}

int main()
{
	int i,j;
	in>>n>>c;
	for(i=1;i<=n;i++)
		in>>v[i].e>>v[i].c;
	for(i=0 ; i<W ; ++i)
		das[i] = INF;
	for(i=1;i<=n;i++)
	{
		for(j=c;j>=0;--j)
			if(das[j]!=INF)
				if(das[j] + v[i].c < das[j+v[i].e])
					das[j+v[i].e]=das[j] + v[i].c;
		if(v[i].c < das[v[i].e])
			das[v[i].e] = v[i].c;
	}
	//scrie();
	int min = INF;
	for(i=c;i<(1<<15);i++)
		if(das[i]<min)
			min=das[i];
	if(min == INF)
		out<<-1;
	else
		out<<min;
	return 0;
}