Cod sursa(job #1785128)

Utilizator andrei20003Ionescu Andrei andrei20003 Data 20 octombrie 2016 21:35:52
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <cstdio>

int x[16010];

int main()
{
    FILE *fin,*fout;
    int i,s,s1,max1,st,dr,m,nr,k,n;
    fin=fopen("transport.in","r");
    fout=fopen("transport.out","w");
    fscanf(fin,"%d%d", &n, &k);
    s1=max1=0;
    for (i=1;i<=n;i++) {
        fscanf(fin,"%d", &x[i]);
        s1+=x[i];
        if (x[i]>max1)
            max1=x[i];
    }
    st=max1;
    dr=s1;
    while (dr>st) {
        nr=s=0;
        m=(st+dr)/2;
        for (i=1;i<=n;i++)
            if (x[i]+s<=m)
                s+=x[i];
            else
                s=x[i],nr++;
        if (nr<k)
            dr=m-1;
        else
            st=m+1;
    }
    fprintf(fout,"%d", st);
    return 0;
}