Cod sursa(job #2360132)

Utilizator BotzkiBotzki Botzki Data 1 martie 2019 13:05:24
Problema Transport Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>

using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
const int NMAX=16000;
int sp[NMAX+5];
int k, sol, n;
bool transport(int cap)
{
    int i, j, nr=0;
    if(cap<sp[1])
        return 0;
   for(i=1;i<=n;i++)
   {
       j=i;
       while(sp[j]-sp[i-1]<=cap and j<=n)
       {
           j++;
       }
       j--;
       i=j;
       nr++;
   }
   if(nr<=k)
    return 1;
   else
    return 0;
}
void cautare_binara(int st, int dr)
{
    int mij;
    sol=dr;
    bool ok;
    while(st<=dr)
    {
        mij=(st+dr)>>1;
        ok=transport(mij);
        if(ok==1)
        {
           sol=min(sol, mij);
           dr=mij-1;
        }
        else
            st=mij+1;
    }
}
int main()
{
   int i;
   fin>>n>>k;
   for(i=1;i<=n;i++)
   {
       fin>>sp[i];
       sp[i]=sp[i]+sp[i-1];
   }
   cautare_binara(1, sp[n]);
   fout<<sol<<"\n";
    return 0;
}