Cod sursa(job #2100508)

Utilizator AlexandruabcdeDobleaga Alexandru Alexandruabcde Data 5 ianuarie 2018 19:01:57
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>

using namespace std;
ifstream f("grupuri.in");
ofstream g("grupuri.out");
long long n, i, j, k, s, t, a[100005], st, dr, mij;
int main ()
{
    f>>k>>n;
    for (i=1;i<=n;i++)
    {
        f>>a[i];
        s+=a[i];
    }
    st=1;
    dr=s/k;
    while (st<=dr)
    {
        mij=st+(dr-st)/2;
        s=0;
        for (i=1;i<=n;i++)
        {
            if (a[i]<mij)  s += a[i];
            else  s += mij;
        }
        if (s>=mij*k)  st = mij+1;
        if (s<mij*k)  dr = mij-1;
    }
    s=0;
    st=mij+1;
    for (i=1;i<=n;i++)
    {
        if (a[i]<st) s+=a[i];
        else s+=st;
    }
    if (s>=st*k)  mij++;
    s=0;
    for (i=1;i<=n;i++)
    {
        if (a[i]<mij) s+=a[i];
        else  s+=mij;
    }
    if (s<mij*k) mij--;
    g<<mij<<'\n';
}