Cod sursa(job #220575)

Utilizator mihnea_andreiMihnea Andrei mihnea_andrei Data 11 noiembrie 2008 17:28:57
Problema Energii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<fstream> 

using namespace std; 

const int n=10050;

int g,w,e[n],c[n],v[n];

void citire () 
{ 
	ifstream in ("energii.in"); 
	in>>g; 
	in>>w; 
	for(int i=1;i<=g;i++) 
		in>>e[i]>>c[i]; 
	in.close ();
}

int calcul ()
{ 
	int i,j; 
	v[0]=1;
	for(i=1;i<=g;i++)
	{
		if(e[i]>=w) 
			if(c[i]<v[w] || v[w]==0) 
				v[w]=c[i]; 
			else; 
		else 
		{
			for(j=w;j>=1;j--) 
				if(v[j])
				{
					if(j+e[i]<w && (v[j]+c[i]<v[j+e[i]] || v[j+e[i]]==0))
						v[j+e[i]]=v[j]+c[i];
					if(j+e[i]>=w && (v[j]+c[i]<v[w] || v[w]==0))
						v[w]=v[j]+c[i];
				}
			if(c[i]<v[e[i]] || v[e[i]]==0)
				v[e[i]]=c[i];
		}
	}
	if(v[w]==0)
		return -1;
	return v[w];
} 

int main () 
{ 
	citire (); 
	ofstream out("energii.out"); 
	out<<calcul(); 
	out.close (); 
	return 0; 
}