Pagini recente » ONIS 2014, Clasament | Cod sursa (job #2296812) | Cod sursa (job #2949956) | Cod sursa (job #2705839) | Cod sursa (job #2666181)
#include<fstream>
long long int v[16000];
using namespace std;
int main(){
ifstream in("transport.in");
ofstream out("transport.out");
long long int n,k,x,m=0,st,dr,t=1;
in>>n>>k;
while(t*2<=n){
t*=2;
}
v[0]=0;
for(long long int i=1;i<=n;i++){
in>>x;
v[i]=v[i-1]+x;
if(m<x){
m=x;
}
}
st=m;
dr=v[n];
while(st+1<dr){
long long int mij=(st+dr)/2,l=0,a=0,r=0;
while(a<v[n]){
a+=mij;
for(long long int i=t;i>0;i/=2){
if((v[i+r]<=a) && (i+r<=n)){
r+=i;
}
}
a=v[r];
l++;
}
if(l>k){
st=mij;
}else{
dr=mij;
}
}
out<<(st+dr+1)/2;
}