Pagini recente » Cod sursa (job #1970816) | Cod sursa (job #468393) | Cod sursa (job #2545452) | Monitorul de evaluare | Cod sursa (job #1506116)
#include <stdio.h>
#include <stdlib.h>
int v[16001];
int main()
{
FILE *fin,*fout;
fin=fopen ("transport.in","r");
fout=fopen ("transport.out","w");
int N,K,i,S=0,max=-1;
fscanf (fin,"%d",&N);
fscanf (fin,"%d",&K);
for (i=1; i<=N; i++)
{
fscanf (fin,"%d",&v[i]);
S+=v[i];
if (v[i]>max)
{
max=v[i];
}
}
int x,k,p,sol;
int x1,x2;
x1=max;
x2=S;
while (x1<=x2)
{
x=(x1+x2)/2;
S=0;
k=0;
for (i=1; i<=N; i++)
{
S+=v[i];
p=0;
if (S>x)
{
S=0;
i--;
k++;
p=1;
}
}
if (p==0)
{
k++;
}
if (k<=K)
{
sol=x;
x2=x-1;
}
else
{
x1=x+1;
}
}
fprintf (fout,"%d",sol);
fclose (fin);
fclose (fout);
return 0;
}