Pagini recente » Cod sursa (job #1770981) | Cod sursa (job #575058) | Cod sursa (job #1434479) | Cod sursa (job #1497191) | Cod sursa (job #2366543)
#include <bits/stdc++.h>
using namespace std;
int v[16001];
ifstream fin ("transport.in");
ofstream fout("transport.out");
bool check(int value, int n, int k){
int actual = 0, i ;
for(i = 1; i <= n and k; ++i){
actual += v[i];
if(actual > value){
k --;
actual = v[i];
}
//fout << actual << " " << k << '\n';
}
if(actual <= value and k > 0) return true;
return false;
}
int binarySearch(int n, long long s, int k){
int current = 0;
for(int power = 24; power >= 0; --power){
if(!check(current + (1 << power), n, k))
current += (1 << power);
}
return current;
}
int main(){
int n, k;
int s = 0, maxim = 0;
fin >> n >> k;
for(int i = 1; i <= n; ++i){
fin >> v[i];
maxim = max(v[i], maxim);
s += v[i];
}
s /= k;
s++;
s = max(maxim ,s);
fout << binarySearch(n, s, k) + 1;
//fout << check(7, n, k);
return 0;
}