Cod sursa(job #1560965)

Utilizator catu_bogdan_99Catu Bogdan catu_bogdan_99 Data 3 ianuarie 2016 15:39:42
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <cstdio>
using namespace std;

int v[50001];

int main()
{

    freopen("transport.in","r",stdin);
    freopen("transport.out","w",stdout);

    int n, k, i, j, t, s, ma, mi, mid;
    ma = 0;
    mi = 0;

    scanf("%d%d",&n,&k);
    for( i = 1; i <= n; ++i ){
        scanf("%d",&v[i]);
        ma += v[i];
        if( v[i] > mi ) mi = v[i];
    }


    while( mi != ma ){
        mid = ( mi + ma ) / 2;

        s = 0;
        t = 1;
        for( i = 1; i <= n && t <= k; ++i ){
            if( v[i] + s > mid ){
                    t++;
                    s = v[i];
            }
            else s += v[i];

        }

        if( t > k ) mi = mid + 1;
        else ma = mid;
    }

    printf("%d",ma);

    return 0;
}