Cod sursa(job #2891966)

Utilizator cyg_TheoPruteanu Theodor cyg_Theo Data 20 aprilie 2022 11:47:20
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <cstdio>
#include <algorithm>
#include <cstring>

using namespace std;

typedef long long ll;
const int NMAX = 2e5+5;

int v[NMAX];

void solve(){

	int n, k;
	scanf("%d %d", &n, &k);

	for(int i=0; i<n; ++i)
		scanf("%d", &v[i]);

	int l=0, r=n*16000+1;

	while(l<r){
		int m = (l+r)/2;

		v[n] = m;
		int cnt = 0, sum = 0;
		for(int i=0; i<=n; ++i){
			sum += v[i];
			if(v[i] > m)
				cnt = k+1;

			if(sum > m)
				cnt++, sum=v[i];
		}

		if(cnt <= k)
			r = m;
		else
			l = m+1;
	}

	printf("%d\n", l);
}

int main(){

	freopen("transport.in", "r", stdin);
	freopen("transport.out", "w", stdout);

	int t = 1;

	for(int i=0; i<t; ++i)
		solve();

	return 0;
}