Cod sursa(job #1498663)

Utilizator ruxi.icleanuRuxandra Icleanu ruxi.icleanu Data 8 octombrie 2015 22:03:47
Problema Transport Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <stdio.h>
#include <stdlib.h>

#define MAXN 16000

int v[MAXN];

int n, k;

inline int inc_camion(int c) {
    int i=0, s, nr_trans=0;
    while(i<n) {
        s=0;
        while(s<=c && i<n) {
            s+=v[i];
            i++;
        }
        nr_trans++;
    }
    return nr_trans;
}

int cautare_binara(int st,int dr) {
    int mij, x;
    while(dr-st>1) {
        mij=(st+dr)/2;
        x=inc_camion(mij);
        if(x>k)
           st=mij;
        else
            dr=mij;
    }
    return dr;
}

int main()
{
    int s, max, i;
    FILE *fi, *fo;
    fi = fopen("transport.in", "r");
    fo = fopen("transport.out", "w");
    fscanf(fi, "%d%d", &n, &k);
    s=0;
    max=1;
    for(i=0; i<n; i++) {
        fscanf(fi, "%d", &v[i]);
        s+=v[i];
        if(v[i]>max)
            max=v[i];
    }
    fprintf(fo, "%d", cautare_binara(max, s));
    fclose(fi);
    fclose(fo);
    return 0;
}