Pagini recente » Cod sursa (job #1139935) | Cod sursa (job #1830002) | Profil burlacuradu | Cod sursa (job #343879) | Cod sursa (job #1038804)
#include<fstream>
using namespace std;
const int Nr1=16001;
int v[Nr1],n,k,i;
int numar_trans(int x)
{
int s=0,nr=0,i=1;
while(i<=n)
{
if(s+v[i]<=x)
{
s+=v[i];
i++;
}
else
{
nr++;
s=0;
}
}
nr++;
return nr;
}
int cautare(int st, int dr)
{
while(st!=dr)
{
if(numar_trans((st+dr)/2)<=k)
dr=(st+dr)/2;
else
st=(st+dr)/2+1;
}
if (numar_trans(st)<=k)
return st;
else
return st+1;
}
int main()
{
int max=0,svector=0;
ifstream in("transport.in");
ofstream out("transport.out");
in>>n>>k;
for(i=1;i<=n;++i)
{
in>>v[i];
svector+=v[i];
if(v[i]>=max)
max=v[i];
}
out<<cautare(max,svector)<<'\n';
in.close();
out.close();
return 0;
}