Cod sursa(job #1739320)

Utilizator Teod12ALEXANDRESCU teodora Teod12 Data 9 august 2016 11:26:13
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <stdio.h>
int a[16001];
int main()
{
    FILE *fin,*fout;
    fin=fopen("transport.in","r");
    fout=fopen("transport.out","w");
    int n,i,j,lmin,lmax,k,x,s,v,elem;
    fscanf(fin,"%d%d",&n,&k);
    lmin=0;
    lmax=0;
    for(i=1;i<=n;i++){
        fscanf(fin,"%d",&a[i]);
        if(lmin<a[i])
            lmin=a[i];
        lmax=a[i]+lmax;
    }
    s=0;

    while(lmin<=lmax){
        x=(lmin+lmax)/2;
        v=0;
        s=1;
        for(i=1;i<=n;i++){
            if(v+a[i]<=x)
                v=v+a[i];
            else{
                v=a[i];
                s++;
            }
        }
        if(s>k){
          lmin=x+1;
        }
        else{
             lmax=x-1;
             elem=x;
        }
    }
    fprintf(fout,"%d",elem);
    fclose(fin);
    fclose(fout);
    return 0;
}