Cod sursa(job #1367126)

Utilizator VisanCosminVisan Tudor Cosmin VisanCosmin Data 1 martie 2015 17:02:33
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <stdio.h>

int n,nrk,aux,x,li,ls,a[16000],k,flag;
int main()
{
    FILE * f = fopen("transport.in","r");
    FILE * g = fopen("transport.out","w");

    fscanf(f,"%d%d",&n,&k);
    flag =1;
    for(int i = 1 ;i<=n;i++)
    {
        fscanf(f,"%d",&a[i]);
        if(a[i]>li) li = a[i];
        ls +=a[i];
    }
    do
    {
        x = (li+ls)/2;
        nrk = 0;
        aux = 0;
        for(int i = 1 ;i<=n;i++)
        {
            if(a[i] +aux <=x)
                aux +=a[i];
            else {
                nrk++;
                aux = a[i];
            }
            if(aux == x)
            {
                nrk++;
                aux = 0;
            }
        }
        if(nrk > k) li = x+1;
        else ls = x-1;
        if(nrk == k)
        {
            fprintf(g,"%d ",x+1);
            flag = 0;
        }

    }while(li<ls && flag);


    fclose(f);
    fclose(g);
    return 0;
}