Pagini recente » Cod sursa (job #1679125) | Cod sursa (job #361701) | Cod sursa (job #1440608) | Cod sursa (job #1268720) | Cod sursa (job #2582436)
#include <iostream>
#include <fstream>
using namespace std;
int v[16005],maxim=-1;
bool verif(int k,int x,int n)
{
int l=0;
if(maxim<=x)
{
for(int i=1;i<=n;i++)
{
long long s=0;
while(s+v[i]<=x and i<=n)
{
s+=v[i];
i++;
}
if(s)
{l++;i--;}
}
if(k<l)
return false;
else
return true;
}else return false;
}
int cautare(int n,int k)
{
int r=0;
for(int p=5; p>=0; p--)
if(verif(k,r+(1<<p),n)==false)
r+=(1<<p);
return r+1;
}
int main()
{
ifstream cin("transport.in");
ofstream cout("transport.out");
int n,k;
cin>>n>>k;
for(int i=1; i<=n; i++)
{
cin>>v[i];
if(v[i]>maxim)
maxim=v[i];
}
cout<<cautare(n,k);
return 0;
}