Pagini recente » Cod sursa (job #1119950) | Cod sursa (job #2738631) | Cod sursa (job #3156788) | Cod sursa (job #384937) | Cod sursa (job #1699969)
#include <cstdio>
using namespace std;
int N,K,v[16001]={},Min=0,Max=16000,Mid,M,val;
int sim(int size)
{
int pos=1,sum,moves=0;
while(pos<=N)
{
sum=0;
while(sum+v[pos]<=size&&pos<=N)
{
sum+=v[pos];
pos++;
}
moves++;
}
if(moves>K)
return 2;
else if(moves<K)
return 1;
else
return 0;
}
int main()
{
freopen ("transport.in","r",stdin);
freopen ("transport.out","w",stdout);
scanf("%d%d",&N,&K);
for(int i=1;i<=N;i++)
{
scanf("%d",&v[i]);
if(v[i]>Min)
Min=v[i];
}
while(Min<Max)
{
Mid=(Min+Max)/2;
val=sim(Mid);
if(val==0)
{
M=Mid;
Max=Mid;
}
else if (val==1)
Max=Mid-1;
else
Min=Mid+1;
}
while(sim(M)==0)
{
M--;
}
M++;
printf("%d",M);
return 0;
}