Cod sursa(job #1778968)

Utilizator toadehuPuscasu Razvan Stefan toadehu Data 14 octombrie 2016 16:15:51
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <iostream>
#include <fstream>

using namespace std;

int v[16061];

int main()
{
    ifstream fin ("transport.in");
    ofstream fout ("transport.out");
    int n,k,sum=0,a;
    fin>>n>>k;
    for (int i=1;i<=n;++i)
    {
        fin>>v[i];
        sum+=v[i];
    }
    a=(sum+k-1)/k;
    int s=a,d=sum,mij=(d+s)/2;
    int volum=0,nr=0;
    while (s<=d)
    {
        nr=0;
        sum=0;
        mij=(s+d)/2;
        for (int i=1;i<=n;++i)
        {
            sum+=v[i];
            if (sum+v[i+1]>mij)
            {
                nr++;
                sum=0;
            }
            if (i==n)
            {
                if (sum>mij)
                {
                    nr+=2;
                }
                else
                {
                    nr++;
                }
            }

        }
        if (nr<=k)
            {
                d=mij-1;
                volum=mij;
            }
        else
            {
                s=mij+1;
            }
    }
    fout<<volum;
}