Pagini recente » Cod sursa (job #2189456) | Cod sursa (job #2070133) | Cod sursa (job #99950) | Cod sursa (job #2554948) | Cod sursa (job #616518)
Cod sursa(job #616518)
#include <cstdio>
using namespace std;
int v[16005],n,k;
int verifica(int sum)
{
int s=0,c=1,i;
for(i=1;i<=n;++i)
{
if(v[i]>sum)
return 0;
else
{
if(s+v[i]<sum)
s+=v[i];
else if(s+v[i]==sum)
{
s=0;
++c;
}
else
{
s=v[i];
++c;
}
}
}
if(c<=k) return 1;
return 0;
}
int main()
{
int s,d,mij,i,sol;
freopen ("transport.in","r",stdin);
freopen ("transport.out","w",stdout);
scanf("%d %d",&n,&k);
for(i=1;i<=n;++i)
{
scanf("%d",&v[i]);
d+=v[i];
}
s=1;
while(s<=d)
{
mij=(s+d)/2;
if(verifica(mij)==1)
{
sol=mij;
d=mij-1;
}
else
s=mij+1;
}
printf("%d",sol);
return 0;
}