Pagini recente » Cod sursa (job #1979029) | Cod sursa (job #285102) | Cod sursa (job #1877408) | Cod sursa (job #60080) | Cod sursa (job #3160781)
#include <iostream>
#include <fstream>
ifstream cin("transport.in");
ofstream cout("transport.out");
int a[16001];
int nrtransport(int a[] , int mij , int n){
long long s1=0;
int cnt=0;
for(int i=1; i<=n;i++){
if(s1+a[i]<mij) s1=s1+a[i];
else {
s1=0;
cnt++;
}
}
return cnt;
}
using namespace std;
int main()
{
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+1;
return 0;
}