Pagini recente » Cod sursa (job #2064271) | Cod sursa (job #2300858) | Cod sursa (job #725693) | Cod sursa (job #1068621) | Cod sursa (job #1519837)
//#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 cautbin2(int nr)
{
long long int mid=0;
int b=1, e=n;
while(b<e)
{
mid=(b+e)/2;
if(v[mid][1]>=nr)
e=mid;
else
b=mid+1;
}
if (v[mid][1]<nr)
++ mid;
return mid;
}
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<<maxim<<" "<<s/k<<" "<<s<<endl;
for(i=maxim;i<=s;i++)
{
if(gasit)
break;
c=0;nr=0;j=0;
while(c<k)
{
c++;
j+=i;
if(j>=nr) //solutie
{
gasit=true;
break;
}
nr=cautbin2(j);
j=nr;
}
}
//cout<<i;
out<<i;
in.close();
out.close();
return 0;
}