Pagini recente » Cod sursa (job #743768) | Cod sursa (job #2036795) | Cod sursa (job #245141) | Cod sursa (job #1018348) | Cod sursa (job #495046)
Cod sursa(job #495046)
#include<fstream>
using namespace std;
int n,k,x[16010],sm;
int ok(int c)
{
int m=0,s=0,i=1;
for(i=1;i<=n;i++)
{
if(x[i]>c) return k+1;
else
if(s+x[i]<=c)
s=s+x[i];
else
{
m++;
s=x[i];
}
}
if(s<c) m++;
return m;
}
int cb()
{
int st,dr,med,last=-1;
st=1;dr=sm;
while(st<=dr)
{
med=(st+dr)/2;
if(ok(med)<=k)
{
last=med;
dr=med-1;
}
else st=med+1;
}
return last;
}
int main()
{
ifstream f("transport.in");
ofstream g("transport.out");
int i;
f>>n>>k;
for(i=1;i<=n;i++){ f>>x[i]; sm=sm+x[i];}
g<<cb();
f.close();
g.close();
return 0;
}