Pagini recente » Cod sursa (job #967904) | Cod sursa (job #2241596) | Cod sursa (job #2669530) | Cod sursa (job #2762691) | Cod sursa (job #2654041)
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
#define nmax 16005
int v[nmax],sum[nmax];
int main()
{
int n,i,j,k;
cin>>n>>k;
for(i=1;i<=n;i++)
{
cin>>v[i];
sum[i]=sum[i-1]+v[i];
}
int st=1;
int dr=nmax*nmax;
int mid;
int poz1;
while(st<=dr)
{
mid=(st+dr)/2;
int poz=0,ok=0;
for(i=1;i<=k;i++)
{
int st1=poz+1;
int x=poz;
int dr1=n;
int med;
while(st1<=dr1)
{
med=(st1+dr1)/2;
if(sum[med]-sum[x]<=mid)
{
poz=med;
st1=med+1;
}
else
dr1=med-1;
}
if(poz>=n)
{
ok=1;
break;
}
}
if(ok==0)
st=mid+1;
else
{
poz1=mid;
dr=mid-1;
}
}
cout<<poz1;
return 0;
}