Pagini recente » Cod sursa (job #2423876) | Cod sursa (job #383602) | Cod sursa (job #2191748) | Cod sursa (job #2561263) | Cod sursa (job #591251)
Cod sursa(job #591251)
#include<stdio.h>
int N;
int A[16001];
int sum;
int K;
int MAX;
int MAX2;
int nr;
int solve(int sum)
{
MAX = 0;
int nr = 1;
int a = 0;
for(int i=1;i<=N;i++)
{
if(a + A[i]<=sum)
a += A[i];
else
a = A[i],nr ++;
if(MAX<a)
MAX = a;
}
return nr;
}
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];
}
sum /= K;
sum ++;
if(sum<MAX)
sum = MAX;
nr = solve(sum);
while(nr != K)
{
if(nr < K)
sum = sum/4*3;
else
sum *= 2;
nr = solve(sum);
}
MAX2 = MAX;
int max = MAX;
fprintf(g,"%d",MAX2);
fclose(g);
fclose(f);
return 0;
}