Cod sursa(job #862842)

Utilizator monica11Szekely Monica monica11 Data 22 ianuarie 2013 23:04:20
Problema Energii Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<fstream>
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
int ct[10005],d[10005],c[10005],ok,i,j,n,w,min1,max1,maxt;
int main()
{
	f>>n>>w;
	for(i=1;i<=n;i++)
	f>>d[i]>>c[i];
	maxt=0;
	do
	{
		ok=1;
		for(i=1;i<=n-1;i++)
			if(c[i]>c[i+1])
			{
				c[0]=c[i];
				c[i]=c[i+1];
				c[i+1]=c[0];
				d[0]=d[i];
				d[i]=d[i+1];
				d[i+1]=d[0];
				ok=0;
			}
	}
	while(ok==0);
	max1=0;
	for(i=1;i<=n;i++)
	{
		for(j=max1;j>=0;j--)
			if((j==0||ct[j]!=0)&&(ct[j+d[i]]>ct[j]+c[i]||ct[j+d[i]]==0))
			{
				ct[j+d[i]]=ct[j]+c[i];
				if(j+d[i]>max1)
					max1=j+d[i];
			}
			if(max1>=w) 
			{
				if(maxt<max1) 
					maxt=max1;
				max1=w;
			}
	}
	min1=35000;
	if(maxt==0)
		g<<"-1";
	if(maxt==w)
		g<<ct[w];
	for(i=w;i<=maxt;i++)
		if(min1>ct[i]&&ct[i]!=0)
			min1=ct[i];
		g<<min1;
		return 0;
}