Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #define NMAX 500001
- using namespace std;
- long long int A[NMAX],n,k,C,s,maxim;
- ifstream in("profu.in");
- ofstream out("profu.out");
- long long int CalcTransport(long long int ip)
- {
- long long int trans,i,cap;
- i=1;
- cap=trans=0;
- while(i<=n)
- {
- if(cap+A[i]<=ip)
- {
- cap+=A[i];
- i++;
- }
- else
- {
- trans++;
- cap=0;
- }
- }
- if(cap==0)
- return trans;
- return trans+1;
- }
- long long int CautBinar()
- {
- long long int p,u,m,rez;
- p=maxim;
- u=s;
- while(p<=u)
- {
- m=p+(u-p)/2;
- if(CalcTransport(m)<=k)
- {
- rez=m;
- u=m-1;
- }
- else
- p=m+1;
- }
- return rez;
- }
- void Citire()
- {
- in>>n>>k;
- for(long long int i=1; i<=n; i++)
- {
- in>>A[i];
- if(A[i]>maxim)
- maxim=A[i];
- s+=A[i];
- }
- }
- int main()
- {
- Citire();
- out<<CautBinar();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement