Cod sursa(job #1039349)

Utilizator vlad.ulmeanu30Ulmeanu Vlad vlad.ulmeanu30 Data 22 noiembrie 2013 21:25:31
Problema Transport Scor 20
Compilator c Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<stdio.h>

int v[16000];

int main()
{
    FILE *f, *g;

    int n,k,i,capc,s,nm,xc,flg=0,min=-1;

    f=fopen("transport.in","r");
    g=fopen("transport.out","w");

    fscanf(f,"%d%d",&n,&k);

    for(i=0;i<n;i++)
    {
        fscanf(f,"%d",&v[i]);
        if(v[i]>min) min=v[i];
    }
    capc=min;

    while(flg==0)
    {
        /*generez prima grupa pentru capacitatea capc*/
        s=0;i=0;
        while(s+v[i]<=capc && i<n)
        {
            s+=v[i];
            i++;
        }
        /*urmatoarele grupe,cel mult inca k-1 grupe*/
        nm=1;xc=0;
        while(i<n && nm<k && xc==0)
        {
            /*generez urmatoarea grupa*/
            s=0;
            while(s+v[i]<=capc && i<n)
            {
                s+=v[i];
                i++;
            }
            if(s==0) xc=1; /* exitcode = 1 , capc este prea mic*/
            else nm++;
        }
        if(i==n && xc==0 && nm==k)
            flg=1;
        else
            capc++;
    }

    fprintf(g,"%d\n",capc);

    fclose(f);
    fclose(g);

    return 0;
}