Cod sursa(job #3344109)

Utilizator sabina.gGrigore Sabina sabina.g Data 1 martie 2026 13:29:09
Problema Grupuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <bits/stdc++.h>
#define cin fin
#define cout fout
using namespace std;
ifstream fin ("grupuri.in");
ofstream fout ("grupuri.out");
long long int n,k,v[100006],s[100006];
bool ver (long long int x)
{
    long long int s1=k*x;
    int st1=1,rasp=0;
    int dr1=n;
    while(st1<=dr1)
    {
        int mij=(st1+dr1)/2;
        if(v[mij]<=x)
        {
            rasp=mij;
            st1=mij+1;
        }
        else
        {
            dr1=mij-1;
        }
    }
    s1-=s[rasp];
    s1-=x*(n-rasp);
    if(s1<=0)
    {
        return 1;
    }
    else
        return 0;
}
int main()
{
    cin>>k>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>v[i];
    }
    long long int st=1,dr=1e11;
    long long int rasp=0, mij;
    for(int i=1;i<=n;i++)
    {
        s[i]=s[i-1]+v[i];
    }
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(ver(mij))
        {
            st=mij+1;
            rasp=mij;
        }
        else
        {
            dr=mij-1;
        }
    }
    cout<<rasp;
    return 0;
}