Pagini recente » Cod sursa (job #1440612) | Cod sursa (job #1528999) | Cod sursa (job #1385036) | Cod sursa (job #1155698) | Cod sursa (job #893315)
Cod sursa(job #893315)
// Include
#include <fstream>
using namespace std;
// Constante
const int sz = 16001;
// Functii
int bs(int left, int right);
bool match(int size);
// Variabile
ifstream in("transport.in");
ofstream out("transport.out");
int num, maxTrucks;
int values[sz];
// Main
int main()
{
in >> num >> maxTrucks;;
for(int i=1 ; i<=num ; ++i)
in >> values[i];
out << bs(1, sz);
in.close();
out.close();
return 0;
}
int bs(int left, int right)
{
int answer;
while(left <= right)
{
int mid = (left + right)/2;
if(match(mid))
{
right = mid - 1;
answer = mid;
}
else
left = mid + 1;
}
return answer;
}
bool match(int size)
{
int trucks = 0;
int sum = 0;
for(int i=1 ; i<=num ; ++i)
{
if(size < values[i])
return false;
sum += values[i];
if(sum > size)
{
if(++trucks == maxTrucks)
return false;
sum = values[i];
}
}
return true;
}