Pagini recente » Cod sursa (job #135531) | Cod sursa (job #2129142) | Cod sursa (job #593632) | Cod sursa (job #583467) | Cod sursa (job #1504020)
#include<iostream>
#include<fstream>
using namespace std;
fstream fin("transport.in",ios::in),fout("transport.out",ios::out);
int x[16003],s=0,maxim=-9999,n,k;
bool verificare(int smax)
{
int i,j,kk=0,saux;
for(i=1;i<=n;i++)
{
saux+=x[i];
if(saux>smax)
{
saux=0;
i--;
kk++;
}
}
if(saux>smax)kk++;
if(kk>k)return 0;
return 1;
}
int divide(int p,int u)
{
int m,ultim;
while(p<=u)
{
m=(p+u)/2;
if(verificare(m))
{
ultim=m;
u=m-1;
}
else
{
p=m+1;
}
}
return ultim;
}
int main()
{
int i;
fin>>n>>k;
for(i=1;i<=n;i++)
{
fin>>x[i];
if(x[i]>maxim)maxim=x[i];
s+=x[i];
}
fout<<divide(maxim,s);
return 0;
}