Cod sursa(job #1796358)

Utilizator CriistinaMicula Cristina Criistina Data 3 noiembrie 2016 13:36:12
Problema Transport Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

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

int n, k, ok;
vector<int> v;

bool verif(int x)
{
    int nr=1, s=0;
    for(int i=0;i<n;i++)
    {
        if(v[i]>x)
        {
            nr=k+1;
            break;
        }
        s+=v[i];
        if(s>x)
        {
            s=v[i];
            nr++;
        }
    }
    if(nr>k)
        return false;
    return true;

}
int cautare_binara(int st, int dr)
{
    if(ok==0)
    {
        int mij;
        while(st<dr)
        {
            mij=(st+dr)/2;
            if(verif(mij))
            {
                dr=mij-1;
                cautare_binara(st, dr);
            }
            else
            {
                st=mij+1;
                cautare_binara(st, dr);
            }
        }
        ok=1;
        return st;
    }
}
int main()
{
    int x, s=0,minim=16002;
    f>>n>>k;
    for(int i=1;i<=n;i++)
    {
        f>>x;
        v.push_back(x);
        s+=v[i-1];
        minim=min(minim, v[i-1]);
    }
    g<<cautare_binara(minim, s);
    return 0;
}