Pagini recente » Cod sursa (job #2360140) | Problema satisfiabilității formulelor logice de ordinul doi | Problema satisfiabilității formulelor logice de ordinul doi | Cod sursa (job #133614) | Cod sursa (job #1786656)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n, k, mx, v[16001];
bool Find(int x)
{
int ans = 0;
int nr = 1;
for(int i = 1; i <= n; ++i)
{
if(ans + v[i] <= x)
{
ans += v[i];
}
else
{
ans = v[i];
++nr;
}
if(nr > k)
return 0;
}
return 1;
}
int main()
{
fin >> n >> k;
for(int i = 1; i <= n; ++i)
{
fin >> v[i];
mx = max(mx, v[i]);
}
int left = mx;
int right = 256000000;
while(left <= right)
{
int mid = (left + right) >> 1;
if(Find(mid))
{
right = mid - 1;
}
else
{
left = mid + 1;
}
}
if(Find(right) && right >= mx)
fout << right;
else
fout << left;
return 0;
}