Cod sursa(job #3253443)

Utilizator contandrei3Andrei Mihai contandrei3 Data 2 noiembrie 2024 17:12:19
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int n,i,v[16005],sum,k,nmax,mij,st,dr,rez,sap,trans;
int main()
{
    fin>>n>>k;
    for (i=1;i<=n;i++)
        {
            fin>>v[i];
            sum+=v[i];
            nmax=max(nmax,v[i]);
        }
    //sap este suma de pana acum in aceasta subsecventa
    //rez este c, pe care il afisam
    //mij este ghiceala curenta
    //trans este nr de transporturi efecturate
    st=nmax;
    dr=sum;
    while (st<=dr) //incepem cauarea binara
        {
            mij=st+(dr-st)/2;
            sap=0;
            trans=1; //ultimele merg intru-un transport (care nu este optim)
            for (i=1;i<=n;i++)
                {
                    if (sap+v[i]<=mij) sap+=v[i];
                    else
                        {
                            sap=v[i];
                            trans++;
                        }
                }
            if (trans<=k)
                {
                    rez=mij;
                    dr=mij;
                }
            else st=mij+1;
            if (st==dr) {fout<<st; return 0;}
        }
    //cout<<rez;
    return 0;
}