Cod sursa(job #999287)

Utilizator chiriacandrei25Chiriac Andrei chiriacandrei25 Data 19 septembrie 2013 20:00:56
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>

using namespace std;

int k,n,v[100005];
long long s=0LL;

inline void Read()
{
    int i;
    ifstream fin("grupuri.in");
    fin>>k>>n;
    for(i=1;i<=n;i++)
    {
        fin>>v[i];
        s+=v[i];
    }
    fin.close();
}

inline bool Verif(long long nr)
{
    long long tot=nr*k;
    int i;
    for(i=1;i<=n;i++)
        tot=tot-min(v[i]*1LL,nr);
    if(tot<=0)
        return true;
    return false;
}

inline long long BSearch()
{
    long long st,dr,mij,sol;
    st=1LL;dr=s/(1LL*k);
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(Verif(mij))
        {
            sol=mij;
            st=mij+1;
        }
        else
            dr=mij-1;
    }
    return sol;
}

int main()
{
    Read();
    ofstream fout("grupuri.out");
    fout<<BSearch()<<"\n";
    fout.close();
    return 0;
}