Pagini recente » Cod sursa (job #1444933) | Cod sursa (job #872464) | Cod sursa (job #1128602) | Cod sursa (job #857228) | Cod sursa (job #732765)
Cod sursa(job #732765)
#include<iostream>
#include<fstream>
using namespace std;
int n,k,x[16100];
ifstream in("transport.in");
ofstream out("transport.out");
void read()
{
int i;
in>>n>>k;
for(i=1;i<=n;i++)
in>>x[i];
}
bool ok(int t)
{
int i,j=0,s;
for(i=1;i<=k;i++){
s=0;
while(s<=t && j<=n){
j++;
s+=x[j];
}
j--;
s-=x[j];
}
return (j==n);
}
void solve()
{
int i,max=0,s=0,last=-1,st,dr,m;
for(i=1;i<=n;i++){
if(x[i]>max)
max=x[i];
s+=x[i];
}
st=max;
dr=s;
while(st<=dr){
m=(st+dr)>>1;
if(ok(m)){
last=m;
dr=m-1;
}
else
st=m+1;
}
out<<last;
}
int main()
{
read();
solve();
return 0;
}