Pagini recente » Borderou de evaluare (job #1036347) | Cod sursa (job #696463) | Cod sursa (job #1504877) | Cod sursa (job #952328) | Cod sursa (job #2083495)
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
const int N = 16001;
int v[N], n, k;
bool sepoate(int c)
{
int i, temp = 0, cc = 0, nr = 0;
for (i = 0; i < n; i++)
{
if (v[i] > c)
return false;
if (v[i] > cc){
nr++;
cc = c;
}
cc -= v[i];
}
return (nr <= k);
}
int main()
{
int pas = 1 << 27, r = 0, i;
f >> n >> k;
for (i = 0; i < n; i++)
f >> v[i];
while (pas != 0){
if (!sepoate(r + pas)){
r += pas;
}
pas /= 2;
}
r++;
g << r;
return 0;
}