Pagini recente » Cod sursa (job #2696933) | Cod sursa (job #2395090) | Cod sursa (job #1396457) | Cod sursa (job #1759669) | Cod sursa (job #2219321)
#include <fstream>
using namespace std;
ifstream in ("transport.in");
ofstream out ("transport.out");
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=0;
}
if (nrtrans<=transmax && nrtrans!=0)
ok=1;
else ok=0;
}
if (sol>mij && ok==1)
dr=mij-1;
///else st=mij+1;
}
return sol;
}
int main()
{
int n,k,v[1000],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;
}