Pagini recente » Cod sursa (job #2735659) | Cod sursa (job #1129824) | Cod sursa (job #1519527) | Cod sursa (job #74258) | Cod sursa (job #2500007)
#include <bits/stdc++.h>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n,k;
int v[500001];
long long suma;
int verif(int vol)
{
int sum=0, nrdrumuri=1;
for(int i=1; i<=n; i++)
{
if(sum+v[i]<=vol)
sum+=v[i];
else
if (v[i]>vol)
return 0;
else
if (sum+v[i]>vol)
{
sum=v[i];
nrdrumuri++;
}
}
if(nrdrumuri<=k)
return 1;
return 0;
}
int caut_bin(int st, int dr)
{
int poz=-1;
while(st<=dr)
{
int mij=(st+dr)/2;
if(verif(mij)==1)
{
poz=mij;
dr=mij-1;
}
else
st=mij+1;
}
return poz;
}
int main()
{
int maxi=0;
f>>n>>k;
for(int i=1; i<=n; i++)
{
f>>v[i];
suma+=v[i];
maxi=max(v[i],maxi);
}
g<<caut_bin(maxi,suma);
return 0;
}