Pagini recente » Cod sursa (job #2282995) | Cod sursa (job #2979479) | Cod sursa (job #2477603) | Cod sursa (job #2274052) | Cod sursa (job #1527767)
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
long v[16001],n,k,mij;
int test(int Max)
{
long S=0,i,ck=0;
for(i=1; i<=n; i++)
{
if(S+v[i]<=Max) S+=v[i];
else
{
S=v[i];
ck++;
}
}
return ck+1;
}
int cautare(int s, int d)
{
if(s>d) return mij;
mij=(s+d)/2;
if(test(mij)<=k) cautare(s,mij-1);
else cautare(mij+1,d);
}
int main()
{
long i,Max=0,sum=0;
f>>n>>k;
for(i=1; i<=n; i++)
{
f>>v[i];
if(v[i]>Max) Max=v[i];
sum+=v[i];
}
g<<cautare(Max,sum);
return 0;
}