Pagini recente » Cod sursa (job #3226203) | Cod sursa (job #1676762) | Cod sursa (job #1533903) | Cod sursa (job #470587) | Cod sursa (job #640269)
Cod sursa(job #640269)
#include <stdio.h>
#include <stdlib.h>
int caut_bin(int,int);
int test(int);
int n,k,a[16000];
int test(int x)
{
int p,s,i;
s=0;p=0;
for (i=1; i<=n; i++)
{
s=s+a[i];
if (s==x) {p++; s=0;} else
if (s>x) {s=0; i--; p++;}
}
if (s>0) p++;
return p;
}
int caut_bin(int i,int j)
{
int x,m;
m=(i+j)/2; x=test(m);
if (i==j) return m; else
if (x<=k) caut_bin(i,m); else caut_bin(m+1,j);
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%i%i",&n,&k);
int s,i,c1,max;
s=0;max=0;
for (i=1;i<=n;i++)
{
scanf("%i",&a[i]);
if (max<a[i]) max=a[i];
s=s+a[i];
}
c1=test(max);
if (c1<=k) printf("%i",c1); else
printf("%i",caut_bin(max,s));
return 0;
}