Pagini recente » Cod sursa (job #454692) | Cod sursa (job #2309390) | Cod sursa (job #2229958) | Cod sursa (job #1964624) | Cod sursa (job #2219353)
#include <fstream>
using namespace std;
ifstream in ("transport.in");
ofstream out ("transport.out");
int v[16000];
int cautbin (int v[], int st, int dr, int transmax, int n) ///
{
int sum=0,nrtrans=0,mij,i,sol,ok=0;
while(st<=dr)///7-20
{
mij=(st+dr)/2;///13
sum=0;
nrtrans=0;
for (i=1; i<=n; i++) ///7 4 2 3 1 4
{
sum+=v[i];
if (sum>mij)
{
nrtrans++;
sum=v[i];
if (i==n)
nrtrans++;
}
else if (sum==mij)
{
nrtrans++;
sum=0;
}
else if (i==n)
nrtrans++;
}
if (nrtrans<=transmax)
{dr=mij-1;
sol=mij;
}
else st=mij+1;
}
return sol;
}
int main()
{
int n,k,maxi=-1,sum=0,i;
in>>n>>k;
for (i=1; i<=n; i++)
{
in>>v[i];
if (v[i]>maxi)
maxi=v[i];
sum+=v[i];
}
out<<cautbin(v,maxi,sum,k,n);
return 0;
}