Pagini recente » Cod sursa (job #2934070) | Cod sursa (job #527993) | Cod sursa (job #2598637) | Cod sursa (job #600068) | Cod sursa (job #655968)
Cod sursa(job #655968)
#include<fstream.h>
#define nmax 16005
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n,k;
int v[nmax],maxs;
long s,w;
void read(){
int i;
fin>>n>>k;
maxs=0;
for (i=1;i<=n;i++)
{
fin>>v[i];
if (v[i]>maxs)
maxs=v[i];
s+=v[i];
}
}
int rez(long m)
{
int i,p;
long u;
u=0;
p=0;
for (i=1;i<=n;i++)
{
if (u+v[i]>m)
{
p++;
u=0;
}
u+=v[i];
}
if (u+v[i]<=m)
return p+1;
return p;
}
void cautbin(long st,long dr)
{
long m;
int p;
if (st<=dr)
{
m=(st+dr)/2;
p=rez(m);
if (p<=k)
{
w=m;
cautbin(st,m-1);
}
else cautbin(m+1,dr);
}
}
int main()
{
read();
cautbin(maxs,s);
fout<<w;
return 0;
}