Cod sursa(job #2750618)

Utilizator BuzatuCalinBuzatu Calin BuzatuCalin Data 12 mai 2021 15:01:53
Problema Transport Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int n,k,salt,sum,gas,p,ant2,k2,max1,min_min;
vector<int> v,suma;
bool inceput=true;
int caut_binara(int st,int dr,int num,int ant)
{
    int mij=(st+dr+1)/2;
    if(ant!=mij)
    {
        if(num==suma[mij]-gas)
        {
            return mij;
        }
        else if(num<suma[mij]-gas)
        {
            caut_binara(st,mij,num,mij);
        }
        else if(suma[mij]-gas<num)
        {
            caut_binara(mij,dr,num,mij);
        }
    }
    else
    {
        return mij;
    }
}
void af(int pos)
{
    int pos2=pos;
    k2=1;
    max1=suma[pos];
    while(pos2<n && k2<k)
    {
        pos2=caut_binara(pos2+1,n-1,suma[pos2],-1);
        gas=suma[pos];
        pos=pos2;
        k2++;
        max1=max(max1,suma[pos2]-gas);
    }
}
int main()
{
    ifstream fin("transport.in");
    ofstream fout("transport.out");
    fin>>n>>k;
    for(int i=0;i<n;i++)
    {
        fin>>salt;
        v.push_back(salt);
        sum+=salt;
        suma.push_back(sum);
    }
    for(int i=0;i<n;i++)
    {
        af(i);
        if(inceput==true)
        {
            min_min=max1;
            inceput=false;
        }
        else
        {
            min_min=min(min_min,max1);
        }
    }
    fout<<min_min;
}