Cod sursa(job #474331)

Utilizator SpiderManSimoiu Robert SpiderMan Data 3 august 2010 13:56:58
Problema Transport Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
# include <cstdio>

const char FIN[] = "transport.in", FOU[] = "transport.out" ;

int V[16005] ;
int N, K ;

int check ( int T ) {
    int F = 1;
    for ( int i = 1, j = 0; i <= N; ++i ) {
        if ( T < V[i] ) {
             return 1 ;
        } else {
            if ( j + V[i] <= T ) {
                j += V[i] ;
            } else {
                F++;
                j = V[i] ;
            }
        }
    }

    if ( F > K ) {
        return 1;
    }

    return 0;
}

int cautbin ( void ) {
    int i , cnt ;

    for (cnt = 1; cnt <= N; cnt <<= 1) ;
    for ( i = 0 ; cnt ; cnt >>= 1 ) {
        if ( check ( i + cnt ) ) {
            i += cnt;
        }
    }

    return ++i ;
}
int main() {
    freopen ( FIN , "r" , stdin ) ;
    freopen ( FOU , "w" , stdout ) ;

    scanf ( "%d %d", &N , &K ) ;

    for ( int i = 1; i <= N; ++i ) {
        scanf ( "%d" , V + i ) ;
    }

    printf ( "%d" , cautbin () ) ;

    return 0;
}