Cod sursa(job #2088488)

Utilizator mbanutaMihai Mihai mbanuta Data 15 decembrie 2017 12:37:57
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <iostream>
#include <cstdio>

using namespace std;
const int L = 27;
int v[160001];
int n,i,c,k;
bool sepoate(int c){
int cc = c, nr = 1;
for( int i=0; i < n ;i++ ){
    if( v[i] > c )
        return false;
    if( v[i] > cc ){
        nr++;
        cc = c;
    }
    cc = cc - v[i];
    if( nr > k )
        return false;
    }
    return true;
}
int main()
{
    FILE*fin,*fout;
    fin = fopen ( "transport.in", "r" );
    fout = fopen ( "transport.out", "w" );
    int pas,r;
    fscanf ( fin, "%d%d", &n,&k );
    for ( i = 0; i < n; i++ )
        fscanf (fin, "%d", &v[i]);
    r = 0;
    pas = 1 << L;
    while ( pas != 0 ){
        if( !sepoate(r + pas) )
            r = r + pas;
        pas = pas / 2;
    }
    fprintf(fout, "%d",r+1 );
    return 0;
}