Pagini recente » Cod sursa (job #2096764) | Cod sursa (job #213335) | Cod sursa (job #92475) | Cod sursa (job #2438790) | Cod sursa (job #2862222)
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("transport.in");
ofstream o("transport.out");
int v[16000], k, n;
bool verificare(int c)
{
int i, contor = 0, sum;
for(i = 0; i < n; i++)
{
sum = v[i];
while(sum <= c && i < n)
{
i++;
sum += v[i];
}
i--;
contor++;
}
if(contor > k)
{
return 0;
}
return 1;
}
int main()
{
int l = 0, r = 0, i, m;
f >> n >> k;
for(i = 0; i < n; i++)
{
f >> v[i];
l = v[i] > l ? v[i] : l;
r += v[i];
}
while(l < r)
{
m = (l + r) / 2;
if(verificare(m))
{
r = m - 1;
}
else
{
l = m + 1;
}
}
o << r;
f.close();
o.close();
return 0;
}