Pagini recente » Cod sursa (job #1863676) | Cod sursa (job #129182) | Cod sursa (job #22041) | Cod sursa (job #2753171) | Cod sursa (job #1700627)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
#define dmax 16005
#define L 30
int v[dmax];
int N, K;
int carry(int t)
{
int cnt, s;
cnt = s = 0;
for(int i = 1; i <= N; i++)
{
if(s + v[i] > t)
{
cnt += 1;
s = 0;
}
if(v[i] > t) return false;
s += v[i];
}
if(s > 0) cnt += 1;
return cnt <= K;
}
int Binary_Search()
{
int i, pas;
i = 0;
pas = 1 << L;
while(pas != 0)
{
if(!carry(i + pas)) i += pas;
pas /= 2;
}
return i + 1;
}
int main()
{
in >> N >> K;
for(int i = 1; i <= N; i++) in >> v[i];
out << Binary_Search();
return 0;
}