Pagini recente » Cod sursa (job #1622254) | Cod sursa (job #1004565) | Cod sursa (job #170904) | Cod sursa (job #691593) | Cod sursa (job #3160813)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int v[16001];
int main()
{
int n,m;
fin >>n>>m;
int dr = 0;
int st = 0;
for (int i = 1; i <= n; i++)
{
fin >>v[i];
dr += v[i];
if (v[i] > st)
{
st = v[i];
}
}
int mij;
int sol = 0;
while (st <= dr)
{
mij = (st + dr) / 2;
int s = 1;
int ss = 0;
for (int i = 1; i <= n; i++)
{
if (v[i] + ss <= mij)
{
ss += v[i];
}
else
{
ss = v[i];
s++;
}
}
///cout <<s<<" "<<ss<<endl;
if(s > m)
st = mij + 1;
else
{
sol = mij;
dr = mij - 1;
}
}
fout <<sol;
return 0;
}