Pagini recente » Cod sursa (job #1768653) | Cod sursa (job #1077877) | Cod sursa (job #116360) | Cod sursa (job #2140379) | Cod sursa (job #2061010)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
long long int v[16000];
int main()
{
long long int dr=0, st=-1, mijloc=0, S=0, c=0, N=0, K=0, i=0, j=0, k=0;
f>>N>>K;
for (i=0; i<N; i++) {
f>>v[i];
if (v[i]>st) st=v[i];
dr+=v[i]; }
while (st<=dr)
{ mijloc=(st+dr)/2;
k=1; j=0;
while (k<=K) {
for (i=j, S=0; i<N && S<=mijloc; i++) S+=v[i];
if (S>mijloc) { j=i-1; k++; }
else break; }
if (k>K) st=mijloc+1;
if (k<=K) { c=mijloc; dr=mijloc-1; }
g<<c;
f.close();
g.close();
return 0; }