Cod sursa(job #1250545)

Utilizator Impaler_009Mihai Nitu Impaler_009 Data 28 octombrie 2014 12:26:34
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
#define maxn 16300

using namespace std;

ifstream fin ("transport.in");
ofstream fout ("transport.out");

int n,k,v[maxn],lo,hi;

bool check (int x)
{
    int cnt = 1,s = 0;

    for (int i=1; i<=n; ++i)
    {
        if (s + v[i] > x)
        {
            s = 0;
            ++cnt;
        }
        s += v[i];
    }

    if (cnt <= k)
      return 1;
    return 0;
}

int main()
{
    fin>>n>>k;

    int lo = 0, hi = 0;

    for (int i=1; i<=n; ++i)
    {
        fin>>v[i];
        hi += v[i];
        lo = max (lo,v[i]);
    }

    ++hi;
    --lo;

    while (hi - lo > 1)
    {
        int mid = (lo + hi)/2;

        if (check (mid))
          hi = mid;
        else lo = mid;
    }

    fout<<hi;
}