Pagini recente » Cod sursa (job #2031897) | Cod sursa (job #1984816) | Cod sursa (job #1157504) | Cod sursa (job #2329114) | Cod sursa (job #1509444)
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int m;
int cautare (int i, int j)
{
m=(i+j)/2;
return m;
}
int main()
{
int n=0,k=0,max0=0,a[16000]= {0},ok0=1;
long int s=0;
fin>>n>>k;
for(int i=0; i<n; i++)
{
fin>>a[i];
if(a[i]>max0) max0=a[i];
s+=a[i];
}
int x=max0;
int y=s;
cautare(x,y);
while(ok0)
{
int copk=k,i=0,copm=m,ok1=1;
long int cops=s;
while(ok1)
{
copm-=a[i];
cops-=a[i];
if(copm<0)
{
copm=m;
copk--;
cops+=a[i];
i--;
}
i++;
if(copk==0)
{
ok1=0;
x=m+1;
if(x!=y)
cautare(x,y);
}
if(cops==0)
{
ok1=0;
y=m;
if(x!=y)
cautare(x,y);
}
if(x==y)
{
ok1=0;
ok0=0;
}
}
}
fout<<x;
fin.close();
fout.close();
return 0;
}