Cod sursa(job #2768799)

Utilizator vlad_maneaManea Vlad Cristian vlad_manea Data 12 august 2021 11:27:30
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("transport.in");
ofstream fout("transport.out");

int n, k, a[16005];

int cb(int s, int lg)
{
    int i, trans=0, sum=0;
    for(i=s; lg!=0; lg>>=1)
        if(i-lg>=0)
        {
            sum=0;
            trans=0;
            int ok=1;
            for(int j=0; j<n; j++)
            {
                sum+=a[j];
                if(a[j]>i-lg)
                {
                    ok=0;
                    break;
                }
                if(sum>i-lg)
                {
                    trans++;
                    sum=a[j];
                }
                else
                    if(sum==i-lg)
                    {
                        trans++;
                        sum=0;
                    }
            }
            if(sum>0)
                trans++;
            if(ok==1)
                if(trans<=k)
                    i-=lg;
        }
    return i;
}

void citire()
{
    fin>>n>>k;
    int lg, s=0;
    for(int i=0; i<n; i++)
    {
        fin>>a[i];
        s+=a[i];
    }
    for(lg=1; lg<=s; lg<<=1);
    fout<<cb(s, lg);
}

int main()
{
    citire();
    return 0;
}