Cod sursa(job #3289814)

Utilizator andrei1232008nicolae andrei andrei1232008 Data 28 martie 2025 16:46:05
Problema Grupuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>
#define int long long
using namespace std;
ifstream fin("grupuri.in");
ofstream fout("grupuri.out");
const int lim=1e5+10;
int n,i,v[lim],s[lim],k,st,dr,mid,keep;
bool sol(int x,int k)
{
    int st=1,dr=n,l=0,mid;
    while(st<=dr)
    {
        mid=(st+dr)/2;
        if(v[mid]<x)
        {
            st=mid+1;
        }
        else
        {
            l=mid;
            dr=mid-1;
        }
    }
    int par=n;
    if(l)
    {
        k-=(n-l+1);
        par=l-1;
    }
    return (s[par]>=x*k);
}
signed main()
{
    fin>>k>>n;
    for(i=1;i<=n;i++)
    {
        fin>>v[i];
        s[i]=s[i-1]+v[i];
    }
    st=1;dr=1e12;
    while(st<=dr)
    {
        mid=(st+dr)/2;
        if(sol(mid,k))
        {
            keep=mid;
            st=mid+1;
        }
        else dr=mid-1;
    }
    fout<<keep;
    return 0;
}