Pagini recente » Cod sursa (job #1864726) | Cod sursa (job #16342) | Cod sursa (job #3159986) | Cod sursa (job #2140041) | Cod sursa (job #2929320)
#include<fstream>
#include<algorithm>
#include<vector>
#include<cstring>
#include<cmath>
//#include<iostream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int a[16005];
int cautare(int st,int dr,int n,int p)
{
int i=0,step=0,minim=dr,minim1=dr;
for(step=1;step<=dr;step<<=1);
for(i=0;step;step>>=1)
{
int s=0,cnt=0;minim=0;
for(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() {
int n,p,mini=0,maxi=0;
cin>>n>>p;
for(int i=1;i<=n;i++)
{
cin>>a[i];
maxi+=a[i];
mini=max(mini,a[i]);
}
cout<<cautare(mini,maxi,n,p);
}