Pagini recente » Cod sursa (job #1388174) | Cod sursa (job #281743) | Cod sursa (job #156830) | Cod sursa (job #903925) | Cod sursa (job #3261614)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int a[16001];
int trans(int pana_aci, int n, int v[16001], int k)
{
int S=0, cnt=1;
for (int i=1; i<=n; i++)
if (S+v[i]<=pana_aci)
S+=v[i];
else
{
S=v[i];
cnt++;
}
if (cnt<=k)
return 1;
else
return 0;
}
int caut_bin(int n, int st, int dr, int v[16001], int k)
{
int cap;
while (st<=dr)
{
int mij=(st+dr)/2;
if (trans(mij, n, v, k))
{
cap=mij;
dr=mij-1;
}
else
st=mij+1;
}
return cap;
}
int main ()
{
int n, k, S=0, max=0, cap;
f>>n>>k;
for (int i=1; i<=n; i++)
{
f>>a[i];
if (max<a[i])
max=a[i];
S+=a[i];
}
g<<caut_bin(n, max, S, a, k);
f.close();
g.close();
return 0;
}