Cod sursa(job #1495720)

Utilizator herbertoHerbert Mohanu herberto Data 3 octombrie 2015 15:21:21
Problema Transport Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<stdio.h>
#include<stdlib.h>
#define MAXN 16001

int v[MAXN];
int main(){
    FILE*fin=fopen("transport.in", "r");
    FILE*fout=fopen("transport.out", "w");
    int n, i, cmin, c, cmax, max, pasi, s, k;
    fscanf(fin, "%d%d", &n, &k);
    cmax=0;
    max=0;
    for(i=1; i<=n; i++){
        fscanf(fin, "%d", &v[i]);
        cmax+=v[i];
        if(v[i]>max)
            max=v[i];
    }
    cmin=max;
    while(cmin<=cmax){
        c=(cmin+cmax)/2;
        i=1;
        pasi=0;
        while(i<=n){
            s=0;
            while(s+v[i]<=c && i<=n){
                s+=v[i];
                i++;
            }
//            printf("%d %d %d\n", c, s, i);
            pasi++;
        }

        if(pasi<=k)
            cmax=c-1;
        else
            cmin=c+1;
//        printf("%d %d\n", cmin, cmax);

    }
    fprintf(fout, "%d", cmax);
    return 0;
}