Cod sursa(job #1341611)

Utilizator vladtpTiriplica Vlad vladtp Data 12 februarie 2015 22:27:14
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>
#include <cstdio>

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

int n, k, s, Max, i, a[16001], li, ls, m, mij, j;
int main()
{
    freopen("transport.in", "r", stdin);
    scanf("%d %d", &n, &k);
    Max = 0;
    s = 0;
    for(i=1; i<=n; i++)
    {
        scanf("%d", &a[i]);
        if(a[i] > Max)
            Max = a[i];
        s += a[i];
    }
    li = Max;
    ls = s;
    m = (li + ls) / 2;
    while(li <= ls)
    {
        j = 0;
        s = 0;
        for(i=1; i<=n; i++)
        {
            if(s + a[i] > m)
            {
                j++;
                s = a[i];
            }
            else
                s += a[i];
        }
        j++;
        if(j <= k)
        {
            mij = m;
            ls = m - 1;
        }
        else
            li = m + 1;
        m = (li + ls) / 2;
    }
    g<<mij;
    return 0;
}