Pagini recente » Cod sursa (job #2634350) | Cod sursa (job #925654) | Cod sursa (job #2513278) | Cod sursa (job #2839782) | Cod sursa (job #2219333)
#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(dr>=st)///7-20
{
mij=(st+dr)/2;///13
sum=0;
nrtrans=0;
for (i=1; i<=n; i++) ///7 3 2 3 1 4
{
sum+=v[i];
if (sum>mij)
{
nrtrans++;
sol=sum;
sum=v[i];;
}
if (sum==mij)
{
nrtrans++;
sum=0;
}
if (nrtrans<=transmax && nrtrans!=0)
ok=1;
else ok=0;
}
if (sol>mij && ok==1)
dr=mij-1;
else st= mij+1;
///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;
}