Cod sursa(job #2091781)

Utilizator andrei2000mAndrei Moldoveanu andrei2000m Data 20 decembrie 2017 10:48:44
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>

using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n,v[16001],k,mn;
int verif(int c)
{
    int i,s=0,nr=0;
    for(i=1;i<=n;i++)
    {
        if (c<v[i]) return 0;
        if(s+v[i]<=c)
            s+=v[i];
        else {nr++;s=v[i];}
    }
    if ((s<=c)&&(nr+1<=k)) return 1;
    else return 0;
}
void caut(int p,int u)
{
    if(p==u)
        {if (verif(p))
            mn=p;
        }
    else if (p<u)
    {
        int mij;
        mij=(p+u)/2;
        if (verif(mij)) {mn=mij;caut(p,mij-1);}
        else caut(mij+1,u);
    }
}
int main()
{   int i,s=0;
    f>>n>>k;
    for(i=1;i<=n;i++)
        {f>>v[i];
        s+=v[i];}
    caut(1,s);
    g<<mn;
    return 0;
}