Pagini recente » Cod sursa (job #2145261) | Cod sursa (job #1201854) | Cod sursa (job #2060895) | Cod sursa (job #1647638) | Cod sursa (job #2593757)
#include <bits/stdc++.h>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
const int N=16010;
int n,k,v[N],C,valmax,sum;
bool poate(int x,int k)
{
int j=0;
while(j<n)
{
j++;
int s=v[j];
while(s+v[j+1]<=x)
{ s=s+v[j+1];
j++;
}
k--;
}
if(k>=0)
return true;
return false;
}
int main()
{
f>>n>>k;
for(int i=1;i<=n;i++)
{
f>>v[i];
if(valmax<v[i])
valmax=v[i];
sum+=v[i];
}
int lo=valmax;
int hi=sum;
while(lo<=hi)
{
int mij=lo+(hi-lo)/2;
if(poate(mij,k))
{C=mij;
hi=mij-1;
}
else
{
lo=mij+1;
}
}
g<<C;
return 0;
}