Cod sursa(job #2160945)

Utilizator vladb21Borcan Vlad vladb21 Data 11 martie 2018 14:48:40
Problema Transport Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <stdio.h>
int main()
{
    int v[16005],copt,n,k,i,j,cmin,dr,st,kcrt,s,mij;
    FILE *f,*g;
    f=fopen("transport.in","r");
    g=fopen("transport.out","w");
    fscanf(f,"%d%d",&n,&k);
    for(i=1;i<=n;i++)
        fscanf(f,"%d",&v[i]);
    cmin=v[1];
    for(i=2;i<=n;i++)
        if(v[i]>cmin)
            cmin=v[i];
    st=cmin;
    dr=16000;
    copt=16001;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        kcrt=1;
        s=v[1];
        for(i=2;i<=n;i++)
        {
            if(s+v[i]>mij){
                kcrt++;
                s=v[i];
            }
            else
                s+=v[i];
        }
        //printf("%d\n",kcrt);
        if(kcrt>k)
           st=mij+1;
        else{
           if(mij<copt)
              copt=mij;
           dr=mij-1;
        }
    }
    fprintf(g,"%d",copt);
}