Pagini recente » Cod sursa (job #1476887) | Cod sursa (job #2105230) | Cod sursa (job #2822566) | Cod sursa (job #3213246) | Cod sursa (job #3160789)
#include <fstream>
#include <iostream>
int a[16001];
int nrtransport(int a[] , int mij , int n){
long long s1=0;
int cnt=1;
for(int i=1; i<=n;i++){
if(s1+a[i]<=mij) s1=s1+a[i];
else {
s1=a[i];
cnt++;
}
}
return cnt;
}
using namespace std;
int main()
{
ifstream cin("transport.in");
ofstream cout("transport.out");
int n,k,max1=-1;
cin>>n>>k;
long long s;
for(int i=1; i<=n; i++ ){
cin>>a[i];
s=s+a[i];
if(max1<a[i]) max1=a[i];
}
int st=max1,raspuns=-1;
long long dr=s;
while(st<=dr){
int mij=(st+dr)/2;
int y=nrtransport(a , mij ,n);
if(y<=k){
raspuns=mij;
dr=mij-1;
}
else st=mij+1;
}
cout<<raspuns;
return 0;
}