Pagini recente » Cod sursa (job #398661) | Cod sursa (job #1135674) | Cod sursa (job #2261998) | Cod sursa (job #47858) | Cod sursa (job #1512681)
#include <fstream>
#define nmax 16005
#include <algorithm>
using namespace std;
ifstream f1("transport.in");
ofstream f2("transport.out");
int s[nmax],i,n,k,m;
void cit(){
f1>>n>>k;
for(i=1;i<=n;i++){
f1>>s[i];
m=max(m,s[i]);
}
}
int check(int x){
int sum=0,c=0;
for(i=1;i<=n;i++){
sum+=s[i];
if(sum>x){c++; sum=s[i];}
}
c++;
return c<=k;
}
int main(){
int l,r,sol,mid;
cit();
if(k==n){sol=m;}
else{
l=m;
r=nmax*nmax;
while(l<=r){
mid=(l+r)/2;
if(check(mid)){
sol=mid;
r=mid-1;
}
else{l=mid+1;}
}}
f2<<sol<<"\n";
}