Cod sursa(job #1488015)

Utilizator Coroian_DavidCoroian David Coroian_David Data 17 septembrie 2015 19:34:24
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
unsigned long n,i,k,k1,mx,s,nra,tr,st,dr,tmp1,tmp2,v[16001];
int mxa(int a,int b)
{
    if(a>b)
        return a;
    return b;
}
int main()
{
    f>>n>>k1;
    for(i=1;i<=n;i++)
        f>>v[i],s+=v[i],mx=mxa(mx,v[i]);
    st=mx;
    dr=s+1;
    if(k==1)
        g<<s;

    else
    {

        while(st<=dr)
        {
            nra=(st+dr)/2;
            k=0;
            tr=0;
            while(k<n)
            {;nra=(st+dr)/2;
                while(nra>=v[k+1])
                {
                    nra-=v[++k];
                }
                tr++;
            }
            if(tr>k1)
                tmp1=(st+dr)/2,st=(dr+st)/2+1;
            else
                tmp1=(st+dr)/2,dr=(dr+st)/2-1;
            if(tr==k1)
                tmp2=tmp1;
        }
        g<<tmp2;
    }
    f.close();
    g.close();
    return 0;
}