Cod sursa(job #2338147)

Utilizator pishcotMiruna Turbatu pishcot Data 7 februarie 2019 08:42:33
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int a[16005];
int n;
int k;
int SePoate(int M)
{
   int ct = 1 , s = 0;
   for(int i = 1; i <= n; i++)
   {
       if(a[i] > M) return 0;
       if(s + a[i] <= M) s += a[i];
       else
       {
           ct++;
           s = a[i];
           if(ct > k) return 0;
       }
   }
   return 1;
}
int CautBin()
{
    int st , dr , mij , sol;
    st = 1;
    dr = 256000000;
    sol = 256000000;
    while(st <= dr)
    {
        mij = (st + dr) / 2;
        if(SePoate(mij))
        {
            sol = mij;
            dr = mij - 1;
        }
        else st = mij + 1;
    }
    return sol;
}
int main()
{

    fin >> n >> k;
    for(int i = 1; i <= n; i++)
        fin >> a[i];
    fout << CautBin();
    return 0;
}