Cod sursa(job #2527577)

Utilizator JesseMcCreeVladimir Sontea JesseMcCree Data 20 ianuarie 2020 17:37:29
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=0, i,s=0;
    if(nrC<v[1])
       return false;
    for(i=0; i<=n; i++)
    {
      if(op!=0)
         i--;
      while(s+v[i+1]<=nrC){
           i++;
           s+=v[i];
      }
      op++;
      s=0;
    }
    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=16000, mij, elem=0;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(ok(mij)==true)
        {
            elem=mij;
            dr=mij-1;
        }
        else
        {
            st=mij+1;
        }
    }
    fprintf(fout, "%d", elem);
    fclose(fin);
    fclose(fout);
    return 0;
}