Cod sursa(job #2407175)

Utilizator HelloWorldBogdan Rizescu HelloWorld Data 16 aprilie 2019 16:41:57
Problema Transport Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int n,k,a[16001],s[16001],i,gr_max,st,stt,dr,c,mij,maxx;
int main()
{
    in>>n>>k;
    for (i=1; i<=n; ++i)
    {
        in>>a[i];
        s[i]+=a[i]+s[i-1];
        gr_max=max(gr_max,a[i]);
    }
    if (k==1)
        out<<s[n]<<"\n";
    else if (k>=n)
        out<<gr_max<<"\n";
    else
    {
        i=gr_max;
        while (1)
        {
            st=1;
            stt=0;
            c=0;
            maxx=0;
            while (c<k)
            {
                mij=0;
                dr=n;
                while (st<dr)
                {
                    mij=(st+dr+1)/2;
                    if (s[mij]-s[stt]>i)
                        dr=mij-1;
                    else
                        st=mij;
                }
                maxx=max(maxx,s[dr]-s[stt]);
                stt=dr;
                st=dr+1;
                c++;
            }
            if (maxx==i && dr==n)
            {
                out<<maxx<<"\n";
                break;
            }
            i++;
        }
    }
}