Cod sursa(job #1803636)

Utilizator atimofteTimofte Alexandra atimofte Data 11 noiembrie 2016 17:23:35
Problema Transport Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <stdio.h>
#include <stdlib.h>
int v[16000];
int main()
{
    FILE*fin,*fout;
    int n,k,min=0,max=0,c,b,nr,s,i,cc=-2;
    fin=fopen("transport.in","r");
    fout=fopen("transport.out","w");
    fscanf(fin,"%d%d",&n,&k);
    for(i=0;i<n;i++){
        fscanf(fin,"%d",&v[i]);
        if(v[i]>min) min=v[i];
        max+=v[i];
    }
    c=-1;
    b=(min+max)/2;
    while(min<max && c!=cc){
        c=b;
        nr=1;s=0;
        for(i=0;i<n;i++){
                if(s+v[i]<=b) s+=v[i];
                else{ nr++;s=v[i];}
        }
        if(nr>k) {min=b;b=(b+max)/2;}
        else {max=b;b=(min+b)/2;}
        cc=b;
    }
    fprintf(fout,"%d",max);
    fclose(fout);
    fclose(fin);
    return 0;
}