Cod sursa(job #1745044)

Utilizator wilson182Alexandrina Panfil wilson182 Data 21 august 2016 00:58:20
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<bits/stdc++.h>
#define N 16050
using namespace std;
int n, k, v[N], i, m;
bool check(int x)
{
	int n1 = n;
    for(int i = 1 ;i <= k; i++)
    {
    	int c = x;
        while(c >= 0)
        {
            if(v[n1]<=c)
                {c -= v[n1];
                n1--;}
             else break;
        }
        if(n1<=0) return 1;
    }
   return 0;
}
int main()
{ int max, min;
	max =0;
	freopen("transport.in", "r", stdin);
	freopen("transport.out", "w", stdout);
	scanf("%d %d", &n, &k);
	for (i = 1; i <= n; i++) {
	scanf("%d", &v[i]);
	max += v[i];
 }
   min = max;
	int st = 1;
	int dr = max;
	while (st < dr) {
		m = (st + dr)/2;
		if (check(m)) {
			if (m < min) min = m;
		dr = m;}
		else st = m+1;
	}
	printf("%d", min);
	return 0;
}