Cod sursa(job #2593757)

Utilizator aser.cobaschiCobaschi Aser aser.cobaschi Data 4 aprilie 2020 15:30:33
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");

const int N=16010;
int n,k,v[N],C,valmax,sum;
bool poate(int x,int k)
{
    int j=0;
    while(j<n)
    {
        j++;
        int s=v[j];
        while(s+v[j+1]<=x)
            {   s=s+v[j+1];
                j++;
            }
        k--;
    }
    if(k>=0)
    return true;
    return false;


}

int main()
{
   f>>n>>k;
   for(int i=1;i<=n;i++)
    {
        f>>v[i];
        if(valmax<v[i])
            valmax=v[i];
       sum+=v[i];
    }
   int lo=valmax;
   int hi=sum;
   while(lo<=hi)
   {
       int mij=lo+(hi-lo)/2;
       if(poate(mij,k))
        {C=mij;
         hi=mij-1;
        }
        else
        {
            lo=mij+1;
        }

   }
   g<<C;
    return 0;
}