Pagini recente » Cod sursa (job #1905824) | Cod sursa (job #2314904) | Cod sursa (job #892341) | Cod sursa (job #534242) | Cod sursa (job #298697)
Cod sursa(job #298697)
#include <cstdio>
#define dim 16010
using namespace std;
int n, st[dim], minim=0, maxim=0, k, sol;
int drum(int c)
{
int ct=0, scur=0, i;
for (i=1; i<=n; i++)
{
if (scur+st[i]>c)
{
scur=st[i];
ct++;
}
else scur+=st[i];
}
ct++;
return ct;
}
void cautare_binara(int lo, int hi)
{
int mij=lo+(hi-lo)/2;
if (drum(mij)<=k)
{
sol=mij;
if (lo<=mij-1) cautare_binara(lo, mij-1);
}
else if (mij+1<=hi) cautare_binara(mij+1,hi);
}
int main()
{
int i;
freopen("transport.in", "r",stdin);
freopen("transport.out", "w", stdout);
scanf("%d %d\n", &n, &k);
for (i=1; i<=n; i++)
{
scanf("%d ", &st[i]);
if (st[i]>minim) minim=st[i];
maxim+=st[i];
}
cautare_binara(minim, maxim);
printf("%d\n", sol);
return 0;
}