Cod sursa(job #1864188)

Utilizator pas.andreiPopovici Andrei-Sorin pas.andrei Data 31 ianuarie 2017 16:25:59
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <bits/stdc++.h>
#define NMAX 16005
#define ll long long
#define INF 0x3f3f3f3f

using namespace std;

typedef pair<int, int> pii;

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

int v[NMAX],k,n;

bool check(int mid) {
	int i,act=0,nr=1;
	for(i=1;i<=n;++i) {
		if(act+v[i]>mid) {
			++nr;
			act=0;
			if(nr>k) return 0;
		}
		act+=v[i];
	}

	return 1;
}

int main() {
	int i,st,dr,mid,last;

	fin>>n>>k;
	for(i=1;i<=n;++i) fin>>v[i];

	st=1;dr=NMAX*NMAX;
	while(st<=dr) {
		mid=(st+dr)/2;

		if(check(mid)) {
			dr=mid-1;
			last=mid;
		}
		else st=mid+1;
	}

	fout<<last;

	return 0;
}