Pagini recente » Cod sursa (job #972439) | Cod sursa (job #2199850) | Cod sursa (job #1808485) | Cod sursa (job #49067) | Cod sursa (job #2055110)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int v[16000];
int main()
{
int N, K, i, j, k;
long long int dr=0, st=0, mijloc=0, S, c;
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; }
if (k<K) dr=mijloc-1;}
g<<c;
f.close();
g.close();
return 0; }