Pagini recente » Cod sursa (job #1143778) | Cod sursa (job #319141) | Cod sursa (job #463834) | Cod sursa (job #444169) | Cod sursa (job #2223080)
#include <fstream>
#include <iostream>
#define NMAX 16001
using namespace std;
long long int A[NMAX],n,k,C,s,maxim;
ifstream in("transport.in");
ofstream out("transport.out");
bool TransportPos(int ip)
{
if(maxim>ip)
return false;
int trans, cap,i;
trans=0;
cap=ip;
i=1;
while(i<=n)
{
while(cap-A[i]>=0)
cap-=A[i++];
trans++;
cap=ip;
}
if(trans>k)
return false;
return true;
}
int CautBinar()
{
int p,u,m;
p=1;
u=s;
m=0;
while(p<=u)
{
m=p+(u-p)/2;
if(TransportPos(m))
u=m-1;
else
p=m+1;
}
return m;
}
void Citire()
{
in>>n>>k;
for(int i=1; i<=n; i++)
{
in>>A[i];
if(A[i]>maxim)
maxim=A[i];
s+=A[i];
}
}
void Afisare()
{
out<<C;
}
int main()
{
Citire();
C=CautBinar();
Afisare();
return 0;
}