Pagini recente » Cod sursa (job #1312921) | Cod sursa (job #2668759) | Cod sursa (job #2128262) | Cod sursa (job #2027711) | Cod sursa (job #2635384)
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
#define NMAX 100005
ifstream fin("transport.in");
ofstream fout("transport.out");
int v[NMAX];
int n,k;
long long f(long long x)
{
long long sum = 0;
int idx = 1;
for(int i = 1;i<=k && idx <= n;i++)
{
sum = 0;
while(idx <= n && sum + v[idx] <= x)
{
sum += v[idx];
idx++;
}
}
if(idx == n + 1)
return 1;
return 0;
}
int main()
{
fin>>n>>k;
for(int i = 1;i<=n;i++)
fin>>v[i];
int st = 1;
int dr = 256000000;
int sol = -1;
while(st<=dr)
{
int m = (st+dr)/2;
int rez = f(m);
if(rez)
{
sol = m;
dr = m - 1;
}
else
{
st = m + 1;
}
}
fout<<sol;
return 0;
}