Cod sursa(job #1739308)

Utilizator Teod12ALEXANDRESCU teodora Teod12 Data 9 august 2016 11:12:58
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 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;
    fscanf(fin,"%d%d",&n,&k);
    lmin=lmax=0;
    for(i=1;i<=n;i++){
        fscanf(fin,"%d",&a[i]);
        if(lmin<a[i])
            lmin=a[i];
        lmax=a[i]+lmax;
    }
    x=lmin+lmax;
    x=x/2;
    s=0;
    int ok=0;
    while(ok==0){
        v=0;
        s=0;
        for(i=1;i<=n;i++){
            if(v+a[i]<=x)
                v=v+a[i];
            else{
                v=a[i];
                s++;
            }
        }
        s++;
        if(s>k){
            lmin=x;
            x=lmin+lmax;
            x=x/2;
        }
        else
            if(s<k){
                lmax=x;
                x=lmin+lmax;
                x=x/2;
            }
            else
                ok=1;
    }
    fprintf(fout,"%d",x);
    fclose(fin);
    fclose(fout);
    return 0;
}