Pagini recente » Cod sursa (job #2902058) | Cod sursa (job #2445998) | Cod sursa (job #1137652) | Cod sursa (job #1165829) | Cod sursa (job #1041617)
#include <cstdio>
#include <algorithm>
#include <vector>
#define N 16002
#define MAX_STEP (1<<15)
using namespace std;
int n,k;
int v[N],sum[N];
int binsearch(int x)
{
size_t i,step;
for(i=0,step=MAX_STEP;step;step>>=1)
{
if(i+step<n && sum[i+step]<=x)
i+=step;
}
return i;
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
//int n,k;
scanf("%d %d\n",&n,&k);
int x;
scanf("%d",&x);
sum[0]=x;
//v[0]=x;
for(int i=1;i<n;++i)
{
scanf("%d",&x);
sum[i]=sum[i-1]+x;
//v[i]=x;
}
int S = sum[n-1];
//printf("%d\n",S/k + (S%k>0));
int i,j,last;
size_t step = MAX_STEP;
for(i=S/k + (S%k>0);step;step>>=1)
{
if(i+step<=S)
{
last=0;
for(j=0;j<k;++j)
{
last = sum[ binsearch(i+step+last) ];
//last = sum[last];
}
if(last<S) {i+=step; printf("%d\n",i);}
}
}
//if(last==S) ++i;
printf("%d",i);
return 0;
}