Cod sursa(job #540449)

Utilizator rares192Preda Rares Mihai rares192 Data 23 februarie 2011 23:10:42
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<fstream>
#include<algorithm>
using namespace std;

ofstream fout("transport.out");

void read();
void cauta(int, int);
int verif(int val);

int mij;
int n, k, c;
int a[16005];

int main()
{
	read();
	cauta( a[1], 1000000000);
	fout.close();
	return 0;
}

void read()
{
	ifstream fin("transport.in");
	
	fin >> n >> k;
	for(int i = 1; i <= n; ++i)
		fin >> a[i];
	
	fin.close();
}


void cauta(int st, int dr)
{
	
	mij = (st + dr) / 2;
	
	int rasp = verif(mij);
	
	if( st != dr )
	{
		if( rasp == 1)
			cauta(st, mij);
		else
			cauta(mij+1 , dr);
	}
	else
	{
		fout << mij;
		exit(1);
	}
}

int verif(int val)
{
	int cont = 1, s = 0;
	for(int i = 1; i <= n; ++i)
	{
		if( s + a[i] <= val)
			s = s+ a[i];
		else
		{
			--i;
			s = 0;
			++cont;
		}
	}
	
	if( cont > k)
		return -1;
	else
	if( cont <= k)
		return 1;
		
}