Pagini recente » Cod sursa (job #1387414) | Cod sursa (job #1960176) | Cod sursa (job #491379) | Cod sursa (job #2144003) | Cod sursa (job #1027069)
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int n, k, *a, st, dr, maxim = 0, s = 0, d, mij;
ifstream f("transport.in");
f>>n>>k;
a = new int[n];
for(int i=0; i<n; i++)
{
f>>a[i];
if(a[i]>maxim)
maxim = a[i];
s = s + a[i];
}
f.close();
st = maxim;
dr = s;
while(st<dr)
{
d = 1;
s = 0;
mij = (st + dr) / 2;
for(int i=0; i<n; i++)
if(s + a[i] <= mij)
s = s + a[i];
else
{
s = a[i];
d++;
}
if(d>k)
st = mij + 1;
else
dr = mij;
}
ofstream g ("transport.out");
g<<st;
g.close();
delete a;
return 0;
}