Pagini recente » Cod sursa (job #3231170) | Cod sursa (job #3199321) | Cod sursa (job #1957634) | Cod sursa (job #1074431) | Cod sursa (job #1436011)
#include<fstream>
using namespace std;
int n,ture,sMom,kMom,mx,limS,limD,mij,sumMax,v[16005];
int main()
{
ifstream f("transport.in");
ofstream g("transport.out");
f>>n>>ture;
for(int i=1;i<=n;i++)
{
f>>v[i];
if(v[i]>mx)mx=v[i];
sumMax+=v[i];
}
limS=mx-1;
limD=sumMax+1;
while(limD-limS>1)
{
mij=(limD+limS)/2;
sMom=0;
kMom=0;
for(int i=1;i<=n;i++)
{
sMom+=v[i];
if(sMom>mij)
{
kMom++;
sMom=v[i];
}
if(i==n)kMom++;
}
if(kMom<=ture)limD=mij;
else limS=mij;
}
sMom=0;
kMom=0;
for(int i=1;i<=n;i++)
{
sMom+=v[i];
if(sMom>mij)
{
kMom++;
sMom=v[i];
}
if(i==n)kMom++;
}
if(kMom==ture)
{
sMom=0;
kMom=0;
for(int i=1;i<=n;i++)
{
sMom+=v[i];
if(sMom>mij-1)
{
kMom++;
sMom=v[i];
}
if(i==n)kMom++;
}
if(kMom==ture)g<<mij-1;
else g<<mij;
}
else g<<++mij;
return 0;
}