Pagini recente » Cod sursa (job #3144377) | Cod sursa (job #212388) | Cod sursa (job #609781) | Cod sursa (job #2462820) | Cod sursa (job #609782)
Cod sursa(job #609782)
#include<stdio.h>
int N;
int A[16001];
int sum;
int K;
int MAX;
int MAX2;
int nr;
int verif(int sum)
{
int nr = 0;
MAX = 0;
int a;
for(int i=1;i<=N;nr ++)
{
a = 0;
for(i;i<=N && a+A[i]<=sum;a += A[i++]);
if(MAX<a)
MAX = a;
}
return nr;
}
int bsearch(int li,int ls)
{
if(li<=ls)
{
int nr = verif((li+ls)/2);
if(nr <= K)
{
MAX2 = MAX;
bsearch(li,(li+ls)/2-1);
}
else
bsearch((li+ls)/2+1,ls);
}
}
int main()
{
FILE *f = fopen("transport.in","r");
FILE *g = fopen("transport.out","w");
fscanf(f,"%d %d",&N,&K);
for(int i=1;i<=N;i++)
{
fscanf(f,"%d ",&A[i]);
sum += A[i];
if(A[i]>MAX)
MAX = A[i];
}
bsearch(MAX,sum);
fprintf(g,"%d",MAX2);
fclose(g);
fclose(f);
return 0;
}