Cod sursa(job #2265662)

Utilizator Teod12ALEXANDRESCU teodora Teod12 Data 21 octombrie 2018 15:29:07
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <stdio.h>
int v[16001];
int main()
{
    FILE *fin,*fout;
    fin=fopen("transport.in","r");
    fout=fopen("transport.out","w");
    int n,k,i,j,st,dr,max,mij,s;
    fscanf(fin,"%d%d",&n,&k);
    max=0; s=0;
    for(i=1;i<=n;i++){
        fscanf(fin,"%d",&v[i]);
        s=v[i]+s;
        if(max<v[i])
            max=v[i];
    }
    dr=s;  st=max;
    int x,w;
    while(st<=dr){
        s=1;
        mij=(st+dr)/2;
        x=0;
        for(i=1;i<=n;i++){
            if(mij>=x+v[i])
                x=x+v[i];
            else{
                x=v[i];
                s++;
            }
        }
        if(s>k){
            st=mij+1;
        }
        else{
            w=mij;
            dr=mij-1;
        }
    }
    fprintf(fout,"%d",w);
    return 0;
}