Cod sursa(job #1030203)

Utilizator vlad.ulmeanu30Ulmeanu Vlad vlad.ulmeanu30 Data 15 noiembrie 2013 15:56:58
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.54 kb
#include<cstdio>

int v[16000];

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

    int n,k,i,j,a,flg=0,smin=-1,s1,st,nps;

    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]>smin) smin=v[i];
    }

    j=1;

    /*while(flg==0 && j<smin)
    {
        //generez primul transport
        for(i=0,s1=0;i<j;i++) s1+=v[i];
        a=j;
        nps=s1;
        while(a<n)
        {
            //generez suma urmatoare
            st=0;
            while(a<n && st+v[a]<=s1)
            {
                st+=v[a];
                a++;
            }
            printf("a=%d\,s1=%d\n",a,s1);
            if(st==0)
                a=n+5;
            else if(st>nps)
                nps=st;
        }
        if(a==n)
            flg=1;
        else j++;
    }*/

    int s=smin;

    while(flg==0)
    {
        //generez primul transport
        i=0;
        s1=0;
        while(s1<s)
        {
            s1+=v[i];
            i++;
        }

        nps=1;
        st=s1;

        while(i<n && nps<=k)
        {
            //generez urmatoarea suma
            s1=0;
            while(s1<s && i<n)
            {
                s1+=v[i];
                i++;
            }
            if(s1>st)
                st=s1;
            nps++;
        }

        if(nps==k+1)
            s++;
        else flg=1;
    }

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

    fclose(f);
    fclose(g);

    return 0;
}