Cod sursa(job #1456318)

Utilizator valentin50517Vozian Valentin valentin50517 Data 30 iunie 2015 12:21:37
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>
#include <cmath>

using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");

int N,K,A[16002],maxi,mid,mid1,tmp,l,r;

int max(int a,int b){
	if(a > b) return a; else return b;
}
int parkur(int g){
	int x = 0,ret = 1;
	for(int i = 0;i<N;i++){
		x+=A[i];
		if(x > g){
			ret++;
			x = A[i];
		}
	}
	return ret;
}

int main(){
	fin >> N >> K;
	for(int i = 0;i<N;i++){
		fin >> A[i];
		r +=A[i];
		maxi = max(maxi,A[i]);
	}
	
	l = max(ceil((float)r/K),maxi);
	for(mid = (l+r)/2;l != r;mid = (l+r)/2){
		tmp = parkur(mid);
		if(tmp <= K){
			r = mid;
		}else{
			l = mid+1;
		}
	}
		
	fout << mid;
	return 0;
}