Pagini recente » Cod sursa (job #1072761) | Cod sursa (job #2797032) | Cod sursa (job #1888932) | Cod sursa (job #434821) | Cod sursa (job #2082128)
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
const int N = 16001;
int n, k, vmax=-1, svmax;
int v[N];
bool sepoate(int x)
{
int s = 0, nr = 0;
for(int i = 1; i <= n; i++)
{
if(s + v[i] <= x) s += v[i];
else{
s = v[i];
nr++;
}
}
if(nr < k) return true;
else return false;
}
int main()
{
in>>n>>k;
for(int i = 1; i <= n; i++)
{
in>>v[i];
svmax += v[i];
vmax = max(vmax, v[i]);
}
int c1 = vmax, c2 = svmax, mij, rez;
while(c1 <= c2)
{
mij = (c1+c2)/2;
if(sepoate(mij))
{
rez = mij;
c2 = mij - 1;
}
else
{
c1 = mij+1;
}
}
out<<rez;
return 0;
}