Pagini recente » Cod sursa (job #1453367) | Cod sursa (job #545518) | Cod sursa (job #2147703) | Cod sursa (job #1453329) | Cod sursa (job #1453321)
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n, k, sum, minim;
int A[17000];
void Alg(int l, int h){
int m, sum = 0;
if(l >= h)
cout << l;
else{
m = round((l+h)/2.0);
int res = 1;
int i = 0;
for(int i = 0; i<n; i++){
sum+=A[i];
if(A[i] > m)
l++;
else
if(sum > m){
res++;
if(sum - A[i] < minim && res == k)
minim = sum - A[i];
sum = A[i];
}
}
if(res == k)
Alg(l, m-1);
else
Alg(m+2, h);
}
}
int main(){
minim = 32000;
fin >> n >> k;
sum = 0;
for(int i = 0; i < n; i++ ){
fin >> A[i];
sum += A[i];
}
Alg(sum/k+1, sum);
return 0;
}