Pagini recente » Cod sursa (job #2574539) | Cod sursa (job #2794319) | Cod sursa (job #2447838) | Cod sursa (job #2400019) | Cod sursa (job #2669200)
#include <bits/stdc++.h>
using namespace std;
int n,maxi,mini,st,k,dr,a[16001];
int numar(int x)
{
int i=1,t=0,sum=0;
while(i<=n)
{
sum=0;
while(sum+a[i]<=x&&i<=n)
{
sum+=a[i];
i++;
}
t++;
}
return t;
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d%d",&n,&k);
scanf("%d",&a[1]);
mini=a[1];
maxi=a[1];
int i;
for(i=2; i<=n; i++)
{
scanf("%d",&a[i]);
maxi=max(maxi,a[i]);
mini+=a[i];
}
st=maxi;
dr=mini;
int rasp,mijloc,x;
rasp= 16000;
while(dr-st>1)
{
mijloc=st+(dr-st)/2;
x=numar(mijloc);
if(x>k) st=mijloc;
else
{
dr=mijloc;
rasp=mijloc;
while(mijloc)
{
mijloc--;
x=numar(mijloc);
if(x<=k)rasp=mijloc;
else break;
}
break;
}
}
st=maxi;
dr=x;
printf("%d",rasp);
return 0;
}