Pagini recente » Cod sursa (job #874399) | Cod sursa (job #2664727) | Cod sursa (job #809655) | Cod sursa (job #2190538) | Cod sursa (job #2615180)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <iomanip>
#include <string>
#include <vector>
using namespace std;
const int N = 16001;
int v[N], n;
int cautbin ( int curent, int x){
int rez = 0, pas = 1 << 13;
while( pas != 0){
if( (rez + pas) <= n && v[rez + pas] - v[curent] <= x)
rez += pas;
pas >>= 1;
}
return rez;
}
int main()
{
ifstream in ("transport.in");
ofstream out ("transport.out");
int k, maxim;
in >> n >> k;
in >> v[1];
maxim = v[1];
for(int i = 2; i <= n; i++){
in >> v[i];
if ( maxim < v[i] )
maxim = v[i];
v[i] += v[i-1];
}
int s = ( v[n]/k ) + 1, d = 0;
if(s < maxim)
s = maxim;
int i = 0;
while ( i < n){
i = cautbin(i,s);
d++;
if(d > k){
i = 0;
s++;
d = 0;
}
}
out << s;
return 0;
}