Cod sursa(job #1081679)

Utilizator stanescu.raduRadu Stanescu stanescu.radu Data 13 ianuarie 2014 20:21:49
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
 #include <fstream>
 
using namespace std;
 
int a[16005],n,k,sol;

ifstream f("transport.in");
ofstream g("transport.out");
 
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 cautare_binara()
{
    int x = 0;
    long long t = (1<<28);
    while(t > 0)
    {
        if(valid(x + t)) sol = x + t;
        else x += t;
        t >>= 1;
    }
}
 
int main()
{

    f >> n >> k;
    for(int i = 1;i <= n; i++)
        f >> a[i];
    cautare_binara();
    g<<sol;
    f.close();
    g.close();
    return 0;
}