Pagini recente » Cod sursa (job #2385456) | Cod sursa (job #2653413) | Cod sursa (job #3229527) | Cod sursa (job #2478961) | Cod sursa (job #2923445)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
const int N=16001;
int n, k, v[N], i, j, s, dr, st, mij , rez;
int verif(int x){
&n, &v[n];
int i, s=0, c=0, ok=0;
for(i=1;i<=n;i++){
s=s+v[i];
if(x<v[i]) return -1;
if(x<s){
s=0;
c++;
i--;
}
else if(x==s){
s=0;
c++;
}
}
if(s!=0) c++;
return c;
}
int main()
{
fin >> n >> k;
for(i=1;i<=n;i++){
fin >> v[i];
s=s+v[i];
}
st=1; dr=s;
while(st<dr){
mij=(st+dr)/2;
/// cout << verif(mij) << " ";
if(verif(mij)==k){
rez=mij;
dr=mij-1;
}
else if(verif(mij)>k || verif(mij)==-1) st=mij+1;
else dr=mij-1;
}
fout << rez;
return 0;
}