Cod sursa(job #2219354)

Utilizator RaduPatraRadu Patra RaduPatra Data 8 iulie 2018 15:39:46
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>
using namespace std;
ifstream in ("transport.in");
ofstream out ("transport.out");
int v[16001];
int cautbin (int v[], int st, int dr, int transmax, int n) ///
{
    int sum=0,nrtrans=0,mij,i,sol,ok=0;
    while(st<=dr)///7-20
    {
        mij=(st+dr)/2;///13
        sum=0;
        nrtrans=0;
        for (i=1; i<=n; i++) ///7 4 2 3 1 4
        {
            sum+=v[i];
            if (sum>mij)
            {
                nrtrans++;
                sum=v[i];
                if (i==n)
                    nrtrans++;
            }
            else if (sum==mij)
            {
                nrtrans++;
                sum=0;
            }
            else if (i==n)
                nrtrans++;
        }
        if (nrtrans<=transmax)
           {dr=mij-1;
           sol=mij;
           }
           else st=mij+1;
    }
    return sol;
}
int main()
{
    int n,k,maxi=-1,sum=0,i;
    in>>n>>k;

    for (i=1; i<=n; i++)
    {
        in>>v[i];
        if (v[i]>maxi)
            maxi=v[i];
        sum+=v[i];
    }

    out<<cautbin(v,maxi,sum,k,n);
    return 0;
}