Cod sursa(job #2527540)

Utilizator JesseMcCreeVladimir Sontea JesseMcCree Data 20 ianuarie 2020 16:37:59
Problema Transport Scor 30
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.99 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(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,elem=0;
    fscanf(fin, "%d%d", &n, &k);
    for(i=1; i<=n; i++)
    {
        fscanf(fin, "%d", &v[i]);
    }


    int st=1, dr=16000, mij;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(ok(mij)==true)
        {
            elem=mij;
            dr=mij-1;
        }
        else
        {
            st=mij+1;
        }
    }
    fprintf(fout, "%d", st);
    fclose(fin);
    fclose(fout);
    return 0;
}