Pagini recente » Cod sursa (job #1384984) | Cod sursa (job #38288) | Cod sursa (job #2937767) | Cod sursa (job #294249) | Cod sursa (job #1795531)
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int v[16001], n, k;
long long min1 = 999999999;
void citire()
{
fin>>n>>k;
for(int i = 1; i <= n; ++i)
{
fin>>v[i];
}
}
bool verificare(long long x)
{
long long e = 0, s = 0;
for(int i = 1; i <= n; ++i)
{
if(v[i] > x)
{
e = k + 1;
break;
}
s += v[i];
if(s > x)
{
s = v[i];
e++;
}
}
if(e < k) return 1;
return 0;
}
void cautBin(long long p, long long u)
{
if(p <= u)
{
long long mid = (p + u) / 2;
if(verificare(mid))
{
if(mid < min1) min1 = mid;
cautBin(p, mid - 1);
}
else cautBin(mid + 1, u);
}
}
int main()
{
citire();
cautBin(1, 1000000000);
fout<<min1;
}