Cod sursa(job #1281143)

Utilizator isa_edi_cristeaEdi Cristea isa_edi_cristea Data 2 decembrie 2014 21:23:27
Problema Transport Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <stdio.h>
int v[16001];
int main()
    {
    FILE *fin=fopen("transport.in","r"),fout=fopen("transport.out","w");
    int n,k,imax,lmax,lmin,i,nrt,c,l1,l2,lm,m;
    imax=0;
    lmax=0;
    fscanf(fin,"%d%d",&n,&k);
    for(i=1;i<=n;i++)
    {
        fscanf(fin,"%d",&v[i]);
    }
    for(i=1;i<=n;i++)
    {
        lmax+=v[i];
        if(v[i]>imax)
        {
            imax=v[i];
        }
    }
    lmin=imax;
    l1=lmin;
    l2=lmax;
    while(l1<=l2)
    {
        c=0;
        nrt=1;
        m=(l1+l2)/2;
        for(i=1;i<=n;i++)
        {
            if(c+v[i]<=m)
            {
               c=c+v[i];
            }
            else
            {
              nrt++;
              c=v[i];
            }
        }
        if(nrt<=k)
        {
            l2=m-1;
            lm=m;
        }
        else
        {
           l1=m+1;
        }
    }
    fprintf(fout,"%d",lm);
    return 0;
}