Pagini recente » Cod sursa (job #3177375) | Cod sursa (job #1172373) | Cod sursa (job #456153) | Cod sursa (job #2116753) | Cod sursa (job #2361986)
#include <iostream>
#include <fstream>
#include <cmath>
#include <algorithm>
using namespace std;
#define MAX 16005
#define INT_MAX 2147483647
ifstream fin("transport.in");
ofstream fout("transport.out");
int n,k,v[MAX],sum,li,ls,mid,s,ct,mi,cap,i;
bool ok;
int main()
{
fin >> n >> k;
for(i=1;i<=n;i++)
{
fin >> v[i];
sum+=v[i];
}
li=1;
ls=cap=sum;
while(li<ls)
{
mid=(li+ls)/2;
i=1;
ct=0;
ok=1;
while(i<=n && ok)
{
if(v[i]>mid)
li=mid+1, ok=0;
s+=v[i];
if(s==mid)
s=0,ct++;
else if(s>mid)
s=0,ct++,i--;
i++;
}
if(s)
ct++;
if(ok)
{
if(ct<=k)
{
ls=mid-1;
if(mid<cap)
cap=mid;
}
if(ct>k)
li=mid+1;
}
}
fout << mid;
return 0;
}