Pagini recente » Cod sursa (job #754359) | Cod sursa (job #3262608) | Cod sursa (job #2240580) | Cod sursa (job #149735) | Cod sursa (job #2862134)
//#include "incl.h"
#include <iostream>
#include <fstream>
#include <string>
#include <cstring>
#include <vector>
#include <algorithm>
#include <utility>
#include <queue>
#include <stack>
using std::cout;
using std::cin;
std::ifstream fin("transport.in");
std::ofstream fout("transport.out");
const int Nmax = 16005;
int arr[Nmax];
int n, k;
bool check(int c)
{
int gr = 0, vol, i = 0;
while(i < n)
{
gr++;
vol = 0;
while(i < n && (vol + arr[i]) <= c)
{
vol += arr[i];
i++;
}
if(vol == 0)
return false;
}
if(gr <= k && i == n)
return true;
return false;
}
int main()
{
fin >> n >> k;
for(int i = 0; i < n; i++)
fin >> arr[i];
int left = 0, right = 16000 * 16000 + 2;
while(left != right)
{
int mid = (left + right) / 2;
if(check(mid))
right = mid;
else
left = mid + 1;
}
if(check(left))
fout << left;
else
fout << left + 1;
}