Cod sursa(job #1072891)

Utilizator teodor98Teodor Sz teodor98 Data 5 ianuarie 2014 10:44:25
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
const int N=16001;
int v[N],k,n,c,l=1,p=1;
int maxim(int a,int b)
{
    if(a>b)
        return a;
    return b;
}
int cautbin(int x)
{
    int pas = 1<<14,sum=0, i=p;
    while(pas!=0)
    {
        if(i+pas<=n)
            sum+=v[i+pas];
        if(i+pas<=n&&(sum<=x))
        {
             i=pas;
            //out << i<<endl;
        }

        pas/=2;
    }
        return i;

    //out << i;

}
int main()
{
    in >> n;
    in >> k;

    for(int i=1;i<=n;i++)
        in>>v[i];
    for(int i=1;i<=n;i++)
    {
        c = maxim(v[i], c);
    }

    while(l<=k)
    {
       int x= cautbin(c);
       if(x!=n)
       {
           l++;
       }
       if(l==k)
       {
           c=0;
           for(int i=x;i<=n;i++)
            c+=v[i];
       }
       p++;

    }
    out << c;
    //-----------
    in.close();
    out.close();
    return 0;
}