Pagini recente » Cod sursa (job #2912517) | Cod sursa (job #2503719) | Cod sursa (job #379642) | Cod sursa (job #2925888) | Cod sursa (job #2929346)
#include<fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
short int a[16001];
int cautare(short int st,int dr,short int n,short int p)
{
int i=0,step=0;
for(step=1;step<=dr;step<<=1);
for(i=0;step;step>>=1)
{
int s=0;
short cnt=0;
for(short int j=1;j<=n;j++)
{
s+=a[j];
if(s+a[j+1]>=i+step)
{
cnt++;
s=0;
}
}
if(s>0)
cnt++;
if(cnt>p)
{ i+=step;
}
}
return i;
}
int main() {
short int n,p,mini=0;
int maxi=0;
cin>>n>>p;
for(int i=1;i<=n;i++)
{
cin>>a[i];
maxi+=a[i];
mini=max(mini,(short)a[i]);
}
short int x=cautare(mini,maxi,n,p);
cout<<max(x,(short)mini);
}