Pagini recente » Cod sursa (job #1577734) | Cod sursa (job #1452615) | Cod sursa (job #186235) | Cod sursa (job #2883149) | Cod sursa (job #1505464)
#include <bits/stdc++.h>
using namespace std;
int n, k, a[10002], sum;
inline void Citire()
{
int i;
ifstream fin("transport.in");
fin >> n >> k;
for(i = 0; i < n; ++i)
{
fin >> a[i];
sum += a[i];
}
fin.close();
}
int Verifica(int M)
{
int i, tr, v, k;
tr = 1;
v = 0;
for(i = 0; i < n; ++i)
{
if(a[i] > M) return 0;
if(v + a[i] <= M)
v += a[i];
else
{
tr++;
v = a[i];
}
}
if(tr > k) return 0;
return 1;
}
int Solutie()
{
int st, dr, m, sol;
st = 1;
dr = sum;
while(st <= dr)
{
m = (st + dr) / 2;
if(Verifica(m))
{
sol = m;
dr = m - 1;
}
else st = m + 1;
}
ofstream fout("transport.out");
fout << sol << "\n";
fout.close();
}
int main()
{
Citire();
Solutie();
return 0;
}