Cod sursa(job #1611030)

Utilizator adu18sptAndrei Mircea adu18spt Data 23 februarie 2016 21:45:07
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<fstream>
using namespace std;
ifstream  fin("transport.in");
ofstream  fout("transport.out");
unsigned long n,k,a[16001],i,maxim=0,sum,s,d,mijl,q=1,sol;
int main()
{
    fin>>n;
    fin>>k;
    for(i=1;i<=n;i++)
    {
        fin>>a[i];
        maxim=max(maxim,a[i]);
        sum+=a[i];
    }
 
    s=maxim;
    d=sum;
    while(s <= d)
    {
        mijl = (s+d)/2;
        sum=0;
        q=1;
        for(i=1; i<=n; i++)
        {
            if(sum + a[i]<=mijl)
                sum += a[i];
            else
                {
                    q++;
                    sum=a[i];
                }
        }
        if(k>=q)
        {
            sol=mijl;
            d=mijl-1;
        }
        else s=mijl+1;
    }
    fout<<sol;
}