Cod sursa(job #1495067)

Utilizator Alex.PAlexandru Pacurar Alex.P Data 2 octombrie 2015 15:17:40
Problema Transport Scor 80
Compilator c Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <stdio.h>
#include <stdlib.h>

int v[16001];

int main()
{
    FILE *fin, *fout;
    int n,k,st,dr,m,incercari,i,suma;
    fin=fopen("transport.in","r");
    fout=fopen("transport.out","w");
    fscanf(fin,"%d%d",&n,&k);
    suma=0;
    for(i=0;i<n;i++){
        fscanf(fin,"%d",&v[i]);
        suma+=v[i];
    }
    st=1;
    dr=suma;
    while(st+1<dr){
        m=(st+dr)/2;
        i=0;
        incercari=1;
        suma=0;
        while(incercari<=k && i<n){
            if(suma+v[i]<=m)
                suma+=v[i];
            else{
                incercari++;
                suma=v[i];
            }
            i++;
        }
        if(incercari<=k)
            dr=m;
        else
            st=m;
    }
    fprintf(fout,"%d",dr);
    fclose(fin);
    fclose(fout);
    return 0;
}