Cod sursa(job #2091311)

Utilizator andreiomd1Onut Andrei andreiomd1 Data 19 decembrie 2017 15:36:00
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>

using namespace std;

ifstream f("transport.in");
ofstream g("transport.out");

int n,k,a[16005],i;
long long int step=0, step1=0;
bool verificare (int valoare)
{
    int i=1;
    int transporturi=0;
    int s=0;

    while(i<=n && a[i]<=valoare)
    {
        s=0;
        while(s+a[i]<=valoare && i<=n)
        {
            s=s+a[i];
            i++;
        }
        transporturi++;
    }

    if(transporturi<=k && i==n+1)
        return true;
    else
        return false;
}

int main()
{
    f>>n>>k;
    int smax=0;
    for(i=1; i<=n; i++)
        f>>a[i],smax+=a[i];

    //long long int step=1<<28;
    //long long int step2=0;
    /*while(step)
    {
        if(verificare(step+step2)==false)
            step2+=step;
        step/=2;
    }
    step2++;
    g<<step2<<'\n';*/

    for(step=1; step<smax; step<<=1);
    for(i=0; step; step>>=1)
        if(i+step<smax && !verificare(i+step))
            i+=step;
    g<< i+1;
    return 0;
}