Cod sursa(job #1367137)

Utilizator VisanCosminVisan Tudor Cosmin VisanCosmin Data 1 martie 2015 17:12:48
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 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;
        printf("%d %d\n",li,ls);
        for(int i = 1 ;i<=n;i++)
        {
            aux +=a[i];
            if(aux > x)
            {
                nrk++;
                aux = a[i];
            }
        }
        if(nrk == k)
        {
            fprintf(g,"%d ",ls);
            flag = 0;
        }
        if(nrk > k) li = x+1;
        else {if(nrk < k) ls = x-1;}

    }while(li<ls && flag);


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