Pagini recente » Cod sursa (job #2903310) | Cod sursa (job #1598202) | Cod sursa (job #1527229) | Cod sursa (job #2822677) | Cod sursa (job #3186608)
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
const int nmax= 16000;
const int pmax= 134217728;
const int dmax= 8192;
int v[nmax+2];
int check( int x, int n ) {
int sol= 0;
for ( int i= 1; i<=n; ++i, ++sol ) {
for ( int step= pmax, last= i; step>0; step/= 2 ) {
if ( i+step<=n && v[last]-v[i+step+1]<=x ) {
i+= step;
}
}
}
return sol;
}
int main() {
int n, k, maxim= 0;
fin>>n>>k;
for ( int i= 1; i<=n; ++i ) {
fin>>v[i];
maxim= max(maxim, v[i]);
}
for ( int i= n-1; i>=1; --i ) {
v[i]+= v[i+1];
}
int sol= v[1];
for ( int step= pmax; step>0; step/= 2 ) {
if ( sol-step>=maxim && check(sol-step, n)<=k ) {
sol-= step;
}
}
fout<<sol<<"\n";
return 0;
}