Pagini recente » Cod sursa (job #2915058) | Cod sursa (job #1474281) | Cod sursa (job #117455) | Cod sursa (job #3285555) | Cod sursa (job #2053413)
#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 dr, st, mijloc, 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=int((st+dr)/2); k=1; j=0;
do {
for (i=j, S=0; i<N && S<=mijloc; i++) S+=v[i];
if (S>mijloc) { j=i-1; k++; }
else break;
} while (k<=K);
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; }