Cod sursa(job #1523796)

Utilizator romircea2010FMI Trifan Mircea Mihai romircea2010 Data 13 noiembrie 2015 12:06:37
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <fstream>

using namespace std;

const int NMax = 16010;
int a[NMax];
int N, K;

bool OK(const int C)
{
    int sum = 0;
    int cnt = 0;
    for (int i = 1; i <= N; ++ i)
    {
        if (sum + a[i] <= C)
        {
            sum += a[i];
        }
        else
        {
            ++cnt;
            sum=a[i];
        }
    }
    ++cnt;
    return (cnt <= K);
}

int main()
{
    ifstream f("transport.in");
    f >> N >> K;
    int st = 0, dr = 0;
    for (int i = 1; i <= N; ++ i)
    {
        f >> a[i];
        dr += a[i];
        st = max(st, a[i]);
    }
    f.close();

    int ans ;
    while(st<=dr)
    {
        int mij = (st+dr) / 2;
        if (OK(mij))
        {
            ans = mij;
            dr = mij - 1;
        }
        else
            st = mij + 1;
    }

    ofstream g ("transport.out");
    g << ans << "\n";
    g.close();

    return 0;
}