Pagini recente » Cod sursa (job #219415) | Cod sursa (job #1048452) | Cod sursa (job #733481) | Cod sursa (job #216116) | Cod sursa (job #1315793)
#include <iostream>
using namespace std;
int verif(int v[100], int n, int k, int c)
{
int i=1,s=0,nr=0;
while(i<=n)
{
while(s+v[i]<=c && i<=n)
{s+=v[i];
i++;}
nr++;
if(nr>k)
return 0;
s=0;
}
return 1;
}
int main()
{
int n,k,i,v[16000],s=0,max=0,m,ls,ld,ok=0,x;
cin>>n>>k;
for(i=1;i<=n;i++)
{
cin>>v[i];
s=s+v[i];
if(v[i]>max)
max=v[i];
}
if(k==1)
cout<<s;
else
{
ls=max;
ld=s;
while(ok==0)
if(ls==ld)
{
ok=1;
if(verif(v,n,k,ls)==1)
x=ls;
}
else
{
m=(ls+ld)/2;
if(verif(v,n,k,m)==1)
{
x=m;
ld=m-1;
}
else ls=m+1;
}
cout<<x;
}
return 0;
}