Cod sursa(job #92189)

Utilizator algoritmarOvidiu Andrei algoritmar Data 14 octombrie 2007 13:15:13
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>

using namespace std;

#define N_MAX 1001
#define W_MAX 5001
#define FIN "energii.in"
#define FOUT "energii.out"

int g,w,cmin = W_MAX,a[N_MAX],b[N_MAX],s,c,i,j,k;

int main()
{
	ifstream fin(FIN);
	ofstream fout(FOUT);
	fin >> g >> w;
	for(i = 0; i < g; ++i){
		fin >> a[i] >> b[i];
	}
	if(a[0] >= w)
		cmin = b[0];
	for(i = 0; i < g; ++i,s = c = 0)
	{	
		s+=a[i], c+=b[i], k = 1;
		while(i+k <= g-1){
			for(j = i+k; j < g; ++j)
			{			
				if( a[j] >= w ){
					if(b[j] < cmin)
						cmin = b[j];
				}
				else{ 
					c += b[j];s += a[j];
					if(s >= w){
						if(c < cmin)
							cmin = c,s = c = 0;
					}
					else
						if(i == g-2 && j == g-1 && cmin == W_MAX)
							cmin = -1;
				}
			}
			++k,c = a[i],s = a[i];
		}
	}	
	fout << cmin;
	return 0;
}