Cod sursa(job #2794265)

Utilizator db_123Balaban David db_123 Data 4 noiembrie 2021 16:20:30
Problema Grupuri Scor 74
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>

using namespace std;

ifstream cin ("grupuri.in");
ofstream cout("grupuri.out");

#define ull unsigned long long

const int DIM = 100005;

int k,n,maxNrGr;
ull sum=0;
int v[DIM];

bool sePotFormaGrupuri(int capacitate)
{
    ull s=0;
    ///din fiecare tip luam maxim capacitate
    for(int i = 0 ; i < n ; i++)
    {
        s+= min(v[i],capacitate);
    }
    //cout << "nr elemente : " << s << " capacitate : " << capacitate << " k: " << k<< endl;
    if (s >= (capacitate * k))
        return true;
    return false;
}

int main()
{
    int left,right,mid,sol=0;

    cin>>k>>n;

    for(int i = 0 ; i < n ; i++)
    {
        cin>>v[i];
        sum+=v[i];
    }
    //cout << "sum:"<<sum<<endl;
    maxNrGr =  sum/k;
    left = 1 ;
    right = maxNrGr;

    /// binary search
    while(left <= right)
    {
        mid = (left+right)/2;//(left+right)>>1;//
        if(sePotFormaGrupuri(mid))
        {
            sol = mid;
            left = mid+1;
        }
        else
            right = mid-1;
    }

    cout << sol;
    return 0;
}