Pagini recente » Cod sursa (job #2049048) | Cod sursa (job #2036788) | Cod sursa (job #2918098) | Cod sursa (job #868412) | Cod sursa (job #630176)
Cod sursa(job #630176)
#include<stdio.h>
#define N 16001
long a[N],n,i,k,s[N],x,c,t,j,m,p,r,q;
int main()
{FILE *f1=fopen("transport.in","r"),*f2=fopen("transport.out","w");
fscanf(f1,"%ld%ld",&n,&k);
for(i=1;i<=n;i++)
{fscanf(f1,"%ld",&a[i]),s[i]=s[i-1]+a[i];
if(m<a[i])
m=a[i];}
p=m,q=s[n];
if(k>=n)
{fprintf(f2,"%ld",m);
return 0;}
else
if(k==1)
{fprintf(f2,"%ld",s[n]);
return 0;}
while(p<=q)
{r=(p+q)/2;
for(i=1,t=x=0;i<=n;)
if(s[i]-s[t]<=r)
i++;
else
t=i-1,x++;
if(s[n]-s[t]<=r)
x++;
if(x>k)
p=r+1;
else
q=r-1;}
if(x<k)
r--;
fprintf(f2,"%ld",r);
return 0;}