Pagini recente » Istoria paginii descriere/ordonare/prea-usor | Cod sursa (job #650564) | Cod sursa (job #1705719) | Cod sursa (job #2521495) | Cod sursa (job #1502099)
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int a[16005], n, k, Camion;
void Citire()
{
fin >> n >> k;
for (int i=1; i<=n; i++)
fin >> a[i];
}
inline int Merge(int Camion)
{
int cnt, i, s;
s = 1000000001; cnt=0;
for (i=1; i<=n; i++)
{
if (a[i] > Camion) return 0;
if (s+a[i] <= Camion)
{
s += a[i];
}
else
{
cnt++;
s = a[i];
}
}
if (cnt > k) return 0;
return 1;
}
void Rezolvare()
{
int st, dr, m;
st = 1; dr = 256000000;
Camion = 256000000;
while (st <= dr)
{
m = (st + dr) / 2;
if (Merge(m))
{
Camion = m;
dr = m - 1;
}
else st = m + 1;
}
fout << Camion << "\n";
}
int main ()
{
Citire();
Rezolvare();
fin.close();
fout.close();
return 0;
}