Pagini recente » Cod sursa (job #2368005) | Cod sursa (job #2051857) | Cod sursa (job #384636) | Cod sursa (job #2691768) | Cod sursa (job #2021298)
#include <iostream>
#include <fstream>
using namespace std;
int v[16001];
int k;
int n;
int CanWeDoIt (int x)
{
int i;
int s=0;
int f=1;
for (i=1;i<=n;i++)
{
if (v[i]>x)
{
return 0;
}
s=s+v[i];
if (s>x)
{
f++;
s=v[i];
}
if (f>k)
return 0;
}
return 1;
}
int cautbin(int st,int dr)
{
long long mij;
int poz;
int aux;
while (st<=dr)
{
mij=(dr-st)/2+st;
aux=CanWeDoIt(mij);
cout<<"st="<<st<<" dr="<<dr;
if (aux==1)
{
poz=mij;
dr=mij-1;
}
else
{
st=mij+1;
}
}
return poz;
}
int main()
{
ifstream in("transport.in");
ofstream out("transport.out");
int st,dr;
in>>n>>k;
int i;
int m=0;
int s=0;
for (i=1;i<=n;i++)
{
in>>v[i];
s=s+v[i];
if (v[i]>m)
m=v[i];
}
//cout<<CanWeDoIt(8)<<" b ";
dr=s;
st=m;
// cout<<s<<" "<<m;
out<<cautbin(st,dr);
}