Pagini recente » Cod sursa (job #389938) | Istoria paginii preoni-2006/runda-1/solutii | Istoria paginii utilizator/sebi212 | Cod sursa (job #246768) | Cod sursa (job #1144218)
#include <cstdio>
#define N 16010
using namespace std;
int i,n,a[N],k,maxi,sum,hi,lo,mi,sol;
bool verif(int x)
{
int cnt=1,sum=0;
for(i=1;i<=n;i++)
{
if(sum+a[i]>x)
{
cnt++;
sum=a[i];
}
else
sum+=a[i];
}
if(cnt<=k)
return 1;
return 0;
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
maxi=maxi>a[i]?maxi:a[i];
sum+=a[i];
}
lo=maxi;hi=sum;
while(lo<hi)
{
mi=(hi+lo)/2;
if(verif(mi))
{
hi=mi;
sol=mi;
}
else
lo=mi+1;
}
printf("%d",sol);
return 0;
}