Pagini recente » Cod sursa (job #698662) | Cod sursa (job #617778) | Cod sursa (job #2239917) | Cod sursa (job #1875542) | Cod sursa (job #1508476)
#include <iostream>
#include <fstream>
#define nmax 16009
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int suma[nmax];
int main()
{int n,k,x,i,in,nr,ls,ld,cap,maxim=-1,finali;
suma[0]=0;
fin>>n>>k;
for(i=1;i<=n;i++)
{fin>>x;if(x>maxim)maxim=x;
suma[i]=suma[i-1]+x;}
ls=0;
ld=suma[n];
while(ls<=ld)
{cap=(ls+ld)/2;
if(cap>=maxim)
{in=0;nr=1;i=1;
while(i<=n)
{ if(suma[i]-suma[in]>cap)
{in=i-1;nr++;}
i++; }
}else nr=k+1;
if(nr<=k){ld=cap-1;finali=cap;}
else ls=cap+1;
}
fout<<finali;
}