Cod sursa(job #1984060)

Utilizator nick12nicolae mihalache nick12 Data 23 mai 2017 16:13:48
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <vector>
#include <iostream>
#include <algorithm>
#include <map>
#include <utility>
#include<iostream>
#include<queue>
#include<utility>
#define RRR ios_base::sync_with_stdio(false);cin.tie(0);
#define ll long long
#define int ll
#define pp pair<int,int>
using namespace std;
vector <int> ar;
int n;
 int k;
 int i;
bool check(int c)
{
	int nr = 1;
	int sum = 0;
	for (int i=0;i<n;i++)
	{
		if (sum + ar[i] > c)
		{
			sum = ar[i];
			nr++;
		}
		else sum+=ar[i];
	}
	if (nr <= k)
		return true;
	return false;
}


int32_t main()
{
	RRR
//			freopen("text.txt","r",stdin);
					freopen("transport.in","r",stdin);
		freopen("transport.out","w",stdout);
	
   
	cin >> n >> k;
	
	
	for (int i=0;i<n;i++)
	{
			int z;
			cin >> z;
			ar.push_back(z);
	} 
	//sort(ar.begin(),ar.end());
	int m;
	int l = 0;
	int high = 16000*16000+100;
	int rs = 16000*16000+100;
	while (l <= high)
	{
		m = (l+high)/2;
		if (check(m))
		{		high = m-1;
			rs = min(rs,m);
		}
		else l = m+1;
	}
	cout << rs;
	return 0;

}