Cod sursa(job #948908)

Utilizator A63N7pTudor Nazarie A63N7p Data 11 mai 2013 21:54:02
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#ifndef __cplusplus
	#error A C++ compiler is required to compile
#endif
#ifndef __FSTREAM_H
	#include<fstream>
	#define __FSTREAM_H
#endif
#ifndef __STRING_H
	#include<cstring>
	#define __STRING_H
#endif
using namespace std;

ifstream in;
ofstream out;

int n,s,v[1001],cost[1001],c[5001],Minim=999999999;

int main()
{
	in.open("energii.in");
	out.open("energii.out");
	in>>n>>s;
	for(int k=1;k<=n;k++)
		in>>v[k]>>cost[k];
	memset(c,-1,sizeof(c));
	c[0]=0;
	for(int i=1;i<=n;i++)
	{
		for(int j=s;j>=0;--j)
		{
			if(c[j]!=-1)
			{
				if(j+v[i]>s)
					Minim=Minim>c[j]+cost[i]?c[j]+cost[i]:Minim;
				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];
			}
		}
	}
	if(c[s]==-1&&Minim==999999999)
		out<<-1<<"\n";
	else
	{
		if(Minim<c[s])
			out<<Minim<<"\n";
		if(Minim>c[s])
			out<<c[s]<<"\n";
	}
	in.close();
	out.close();
	return 0;
}