Pagini recente » Cod sursa (job #2617869) | Cod sursa (job #3213609) | Cod sursa (job #56076) | Cod sursa (job #1227375) | Cod sursa (job #894306)
Cod sursa(job #894306)
#include<fstream>
using namespace std;
int v[16010], n , k, camion_max, camion_min, m;
ifstream fin("transport.in");
ofstream fout("transport.out");
inline void citire()
{
fin >> n >> k;
for(int i = 1; i <= n; ++i)
{
fin >> v[i];
if(v[i] > camion_min) camion_min = v[i];
camion_max += v[i];
}
}
int main()
{
citire();
long long sol = 800000;
int suma = 0, contor = 0;
int q;
m = (camion_min + camion_max)/2;
while(camion_min <= camion_max)
{
for(q = 1; q<= n; ++q)
{
if(suma + v[q] <= m)
{
suma += v[q];
}
else
{
contor++;
suma = v[q];
}
}
if(suma <= m)++contor;
if(contor <= k)
{
camion_max = m - 1;
m = (camion_min + camion_max)/2;
contor = 0;
suma = 0;
}
if(contor > k)
{
camion_min = m + 1;
m = (camion_min + camion_max)/2;
contor = 0;
suma = 0;
}
if(camion_min == camion_max) sol = m;
}
fout << sol;
return 0;
}