Cod sursa(job #1044842)

Utilizator albupetruFMI Albu Petru albupetru Data 30 noiembrie 2013 15:28:11
Problema Transport Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include <fstream>
using namespace std;

int a[16001],n,k,sol;

bool valid(int q)
{
    int sum=0,l=k;
    for(int i=1;i<=n;i++)
    {
        sum+=a[i];
        if(q==sum)
        {
            sum=0;
            l--;
        }
        else if(q<sum)
        {
            i--;
            sum=0;
            l--;
        }

        if(l==0)
            {if(i==n)
                return true;
            else return false;}
    }
    return true;
}

void cbinara()
{
    int pz=0;
    long long t=(1<<28);
    for(int i=1;i<=n;i++)
    {
        if(valid(pz+t)) sol=pz+t;
        else pz+=t;
        t>>=1;
    }
}

int main()
{
    ifstream f("transport.in");
    ofstream g("transport.out");
    f>>n>>k;
    for(int i=1;i<=n;i++)
        f>>a[i];

    cbinara();
    g<<sol;

    //g.close();
    //f.close();
    return 0;
}