Cod sursa(job #220570)

Utilizator mihnea_andreiMihnea Andrei mihnea_andrei Data 11 noiembrie 2008 17:15:06
Problema Energii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 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++)
	{		
		for(j=w-1;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; 
}