Cod sursa(job #2382459)

Utilizator daria_stoianStoian Daria Alexandra daria_stoian Data 18 martie 2019 13:00:28
Problema Transport Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

int n, v[16000], k;

bool se_poate( int c )
{
    int nrt = 0, cc = 0;
    for ( int i = 0; i < n; i ++ )
    {
        if ( v[i] > c )
        {
            return false;
        }
        if ( v[i] > cc )
        {
            cc = c;
            nrt ++;
        }
        cc -= v[i];
    }
    return (nrt <= k);
}

int main()
{
    FILE *fin, *fout;
    fin = fopen( "transport.in", "r" );
    fout = fopen( "transport.out", "w" );
    fscanf( fin, "%d%d", &n, &k );
    int r = 0, pas = 1 << 28, i;
    for ( i = 0; i < n; i ++ )
    {
        fscanf( fin, "%d", &v[i] );
    }
    while ( pas > 0 )
    {
        if ( !se_poate( r + pas ) )
        {
            r += pas;
        }
        pas /= 2;
    }
    fprintf( fout, "%d", r +1);
    fclose( fin );
    fclose(fout );
    return 0;
}