Cod sursa(job #2625313)

Utilizator stefanst77Luca Stefan Ioan stefanst77 Data 5 iunie 2020 21:10:43
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <bits/stdc++.h>

using namespace std;
ofstream fout ("transport.out");

int a[16005], n, k;

void Citire()
{
    ifstream fin ("transport.in");
    int i;
    fin >> n >> k;
    for (i=1; i<=n; i++)
        fin >> a[i];
    fin.close();
}
///returneaza 1 daca sirul se poate imparti in cel
///mult k secvente de suma L
int Imparte (int L)
{
    int s, i, secv;
    s=0;
    secv=1;
    for (i=1; i<=n; i++)
        {
            if (a[i]>L) return 0;
            s+=a[i];
            if (s>L)
            {
                secv++;
                s=a[i];
            }
        }
    if (secv<=k) return 1;
    return 0;
}
int CautBin ()
{
    int st, dr, poz, m;
    st=1;
    dr=256000000;
    poz=0;
    while (st<=dr)
    {
        m=(st+dr)/2;
        if (Imparte(m)==1)
        {
            poz=m;
            dr=m-1;
        }
        else st=m+1;
    }
    return poz;
}
int main()
{
    int x;
    Citire();
    x=CautBin();
    fout << x <<"\n";
    fout.close();
    return 0;
}