Pagini recente » Cod sursa (job #1039945) | Cod sursa (job #1996742) | Cod sursa (job #743263) | Cod sursa (job #1961589) | Cod sursa (job #3237444)
#include <iostream>
#include <fstream>
#define DMAX 16005
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int v[DMAX], n;
int drum(int capacitate);
int main()
{
int i, m, maxx = 0, sum = 0;
fin >> n >> m;
for(i = 0; i < n; i++)
{
fin >> v[i];
if(v[i] > maxx)
maxx = v[i];
sum += v[i];
}
int st = maxx, dr = sum;
while(dr - st > 1)
{
int mij = (st + dr) / 2;
if(m >= drum(mij))
dr = mij;
else
st = mij;
}
fout << dr;
return 0;
}
int drum(int capacitate)
{
/// 7 + 24 = 31 / 2 = 15
int nr = 1, sum = 0, i;
for(i = 0; i < n; i++)
{
if(sum + v[i] <= capacitate)
sum += v[i];
else
nr ++, sum = v[i];
}
return nr;
}