Cod sursa(job #2491306)

Utilizator SochuDarabaneanu Liviu Eugen Sochu Data 12 noiembrie 2019 11:50:09
Problema Grupuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <bits/stdc++.h>
#define NMAX 100005

using namespace std;

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

long long n , k;
long long a[NMAX];

bool inline ok(long long mij)
{
    long long s = 0 , i;

    for(i = n ; i >= 1 ; i--)
    {
        if(a[i] >= mij)
            s += mij;
        else s += a[i];
    }

    return s >= mij * k;
}

long long cb(long long s)
{
    long long st = 1 , dr = s , mij = 0 , ans = 0;

    while(st <= dr)
    {
        mij = (dr - st) / 2 + st;

        if(ok(mij) == true)
        {
            ans = mij;
            st = mij + 1;
        }
        else dr = mij - 1;
    }

    return ans;
}

int main()
{
    long long s = 0 , i;

    f >> k >> n;

    for(i = 1 ; i <= n ; i++)
        f >> a[i] , s += a[i];

    g << cb(s);

    return 0;
}