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