Pagini recente » Cod sursa (job #914334) | Cod sursa (job #637388) | Cod sursa (job #2946708) | Cod sursa (job #1401190) | Cod sursa (job #3155574)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
vector<int>v;
int n,k;
int sum=0;
int maxx=-1;
int cautBin()
{
int st=maxx;
int dr=sum;
int rasp=-1;
while(st<=dr)
{
int mij=(st+dr)/2;
int s=0;
int cont=1;
for(int i=1; i<=n; i++)
{
if(s+v[i]>mij)
{
cont++;
s=v[i];
}
else
{
s+=v[i];
}
}
if(cont<=k)
{
dr=mij-1;
rasp=mij;
}
else
{
st=mij+1;
}
}
return rasp;
}
void read()
{
cin>>n>>k;
v.clear();
v.resize(n+1);
for(int i=1; i<=n; i++)
{
cin>>v[i];
}
}
void solve()
{
read();
for(int i=1; i<=n; i++)
{
maxx=max(maxx,v[i]);
sum+=v[i];
}
cout<<cautBin();
}
int main()
{
int t;
t=1;
while(t--)
{
solve();
}
}