Pagini recente » Cod sursa (job #2852357) | Cod sursa (job #3290321) | Cod sursa (job #2906562) | Cod sursa (job #2257916) | Cod sursa (job #2768799)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n, k, a[16005];
int cb(int s, int lg)
{
int i, trans=0, sum=0;
for(i=s; lg!=0; lg>>=1)
if(i-lg>=0)
{
sum=0;
trans=0;
int ok=1;
for(int j=0; j<n; j++)
{
sum+=a[j];
if(a[j]>i-lg)
{
ok=0;
break;
}
if(sum>i-lg)
{
trans++;
sum=a[j];
}
else
if(sum==i-lg)
{
trans++;
sum=0;
}
}
if(sum>0)
trans++;
if(ok==1)
if(trans<=k)
i-=lg;
}
return i;
}
void citire()
{
fin>>n>>k;
int lg, s=0;
for(int i=0; i<n; i++)
{
fin>>a[i];
s+=a[i];
}
for(lg=1; lg<=s; lg<<=1);
fout<<cb(s, lg);
}
int main()
{
citire();
return 0;
}