Cod sursa(job #1744186)

Utilizator otnielMercea Otniel otniel Data 19 august 2016 13:57:55
Problema Transport Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<iostream>
#include<fstream>
using namespace std;
int stiva[16001],varf,drumuri;
long long minim, maxim,nrmin;
int poate(long long n)
{
    int varf1=varf-1;
    for(int i=0;i<drumuri;i++)
    {
        long long capacitate=n;
        while(capacitate>=0&&varf1>=0)
        {
            if(stiva[varf1]<=capacitate)
                {capacitate=capacitate-stiva[varf1];
                varf1--;}
             else break;
        }
    }
    if(varf1<0) return 1;
    else return 0;
}

long long bin(long long st,long long dr)
{
    if(st<dr)
    {long long mij=(st+dr)/2;

    if(poate(mij))
            if(mij<nrmin)
                nrmin=mij;

     bin(st,mij);
     bin(mij+1,dr);
    }
    return nrmin;
}
int main()
{
    ifstream f("transport.in");
    f>>varf;
    f>>drumuri;
    for(int i=0;i<varf;i++)
    {
    f>>stiva[i];
    maxim=maxim+stiva[i];
    }
    nrmin=maxim;

   ofstream g("transport.out");
    g<<bin(minim,maxim);

}