Cod sursa(job #1706917)

Utilizator cristinamateiCristina Matei cristinamatei Data 23 mai 2016 20:08:21
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int N = 16003;
int n, k, st[N], nrmax, sum[N];

bool sepoate( int cap )
{
    int i, c = cap, nr = 1;
    for ( i = 1; i <= n; i++ )
    {
        if ( st[i] > c )
        {
            c = cap;
            nr++;
        }
        if ( st[i] > c )
            return false;
        if ( nr > k )
            return false;
        c -= st[i];
    }
    return true;
}

int cb()
{
    int i = 0, pas = 1<<30;
    while ( pas != 0 )
    {
        if ( !sepoate(i+pas) )
            i+=pas;
        pas/=2;
    }
    return 1+i;
}

int main()
{
    int i, x;
    in >> n >> k;
    for ( i = 1; i <= n; i++ )
        in >> st[i];

    out << cb();
    return 0;
}