Pagini recente » Cod sursa (job #1588944) | Cod sursa (job #2301518) | Cod sursa (job #2099244) | Cod sursa (job #1394792) | Cod sursa (job #1519856)
//#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("transport.in");
ofstream out ("transport.out");
int v[16002][2], s=0, maxim=0, k, n, c;
int cautbin(int nr)
{
long long int mid;
int b=1, e=n;
while(b<e)
{
mid=(b+e)/2;
if(v[mid][1]<=nr)
b=mid+1;
else
e=mid;
}
if (v[b][1]>nr)
--b;
return v[b][1];
}
int main()
{
int i, j, nr;
bool gasit=false;
in>>n>>k;
for(i=1;i<=n;i++)
{
in>>v[i][0];
v[i][1]=v[i-1][1]+v[i][0];
s=s+v[i][0];
if(maxim<v[i][0])
maxim=v[i][0];
}
for(i=1;i<=n;i++)
/* cout<<v[i][0]<<" ";
cout<<endl;
for(i=1;i<=n;i++)
cout<<v[i][1]<<" ";*/
if(maxim<s/k)
maxim=s/k;
//cout<<endl;
// cout<<endl<<maxim<<" "<<s/k<<" "<<s<<endl;
for(i=maxim;i<=s;i++)
{
c=0;nr=0;j=0;
while(c<k)
{
c++;
j+=i;
if(j>=s) //solutie
{
gasit=true;
break;
}
nr=cautbin(j);
//cout<<nr<<" ";
j=nr;
}
if(gasit)
break;
//cout<<endl;
}
//cout<<i;
out<<i;
in.close();
out.close();
return 0;
}