Cod sursa(job #798238)

Utilizator RobertBBadea Corneliu Robert RobertB Data 15 octombrie 2012 22:57:41
Problema Transport Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <iostream>
#include <fstream>

using namespace std;

int N,k;
int Max;
int suma;
int st[16000];

ifstream f("transport.in");
ofstream g("transport.out");

int check(int val)
{
	int i = 0;
	int x = 0;
	int s = 0;
	while(i <= N) {
		if(s + st[i] <= val) {
			s+= st[i];
		} else {
			s = st[i];
			x++;
		}
		i++;
	}
	if(x < k)
		return 1;
	return 0;
}
int caut_bin(int li, int ls)
{

	if(li == ls) {
		if(check(ls))
			return ls;
		//else
			//return ls+1;
	}
	int m = (li+ls)/2;
	if(check(m)) {
		return caut_bin(li, m);
	} else {
		return caut_bin(m+1, ls);
	}
}


int main()
{
	
	int i;
	f>>N;
	f>>k;
	for(i = 0 ; i < N; i++) {
		f>>st[i];
		if(st[i] > Max) {
			Max = st[i];
		}
		suma += st[i];
	}
	g<<caut_bin(Max, suma);
}