Cod sursa(job #1727619)

Utilizator andreigeorge08Sandu Ciorba andreigeorge08 Data 11 iulie 2016 12:45:35
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <bits/stdc++.h>

using namespace std;
int a[16005],n,k;
void Citire()
{
    int i;
    ifstream fin ("transport.in");
    fin >> n >> k;
    for(i=1; i<=n; i++)
        fin >> a[i];
    fin.close();
}
int Imparte(int L)
{
    int i, suma = 0,secv=1;

    for(i=1; i<=n; i++)
    {
        if(a[i]>L)return 0;
        suma+=a[i];
        if(suma > L)
        {
            secv++;
            suma = a[i];
        }
    }
    if(secv<=k)return 1;
        return 0;
}

int CautBin()
{
    int st, dr, m, poz;
    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;
    ofstream fout("transport.out");
    Citire();

    x=CautBin();

    fout << x << "\n";
    fout.close();
    return 0;
}