Pagini recente » Cod sursa (job #389552) | Cod sursa (job #2245858) | Cod sursa (job #3295185) | Cod sursa (job #1089668) | Cod sursa (job #1004675)
#include<cstdio>
#include<climits>
using namespace std;
#define NMAX 16000
int n,k,v[NMAX+5],st=1,dr=INT_MAX,mij;
int urm(int p, int K)
{
int i,s=0;
for (i=p;i<=n;++i)
{
s+=v[i];
if (s>K) return i-1;
}
return n;
}
bool verif(int K)
{
int i=1,val,nr=0;
while (i<=n)
{
val=urm(i,K);
if (val<i) return false;
else ++nr, i=val+1;
}
if (nr<=k) return true;
else return false;
}
int main()
{
int i;
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]);
while (st<=dr)
{
mij=(st+dr)/2;
if (verif(mij)) dr=mij-1;
else st=mij+1;
}
printf("%d\n",dr+1);
return 0;
}