Cod sursa(job #2528613)

Utilizator JesseMcCreeVladimir Sontea JesseMcCree Data 22 ianuarie 2020 11:15:08
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb

#include <stdio.h>

#include <stdlib.h>

#include <stdbool.h>



int v[16001];

int k;

int n;



bool ok(int nrC)

{

    int op=1, i, sr=nrC;

    for(i=1; i<=n; i++)

    {

        if(nrC<v[i])

        {

            return false;

        }

        else

        {

            if(sr>=v[i])

            {

                sr=sr-v[i];

            }

            else

            {

                op++;

                sr=nrC;

                sr=sr-v[i];

            }

        }

    }

    if(op<=k)

    {

        return true;

    }

    else

        return false;

}



int main()

{

    FILE *fin, *fout;

    fin=fopen("transport.in", "r");

    fout=fopen("transport.out", "w");



    int i;

    fscanf(fin, "%d%d", &n, &k);

    for(i=1; i<=n; i++)

    {

        fscanf(fin, "%d", &v[i]);

    }





    int st=1, dr=256000000, mij;

    while(st<dr)

    {

        mij=(st+dr)/2;

        if(ok(mij)==true)

        {

            dr=mij;

        }

        else

        {

            st=mij+1;

        }

    }

    fprintf(fout, "%d", st);

    fclose(fin);

    fclose(fout);

    return 0;

}