Cod sursa(job #1225420)

Utilizator catalinrebegeaUNIBUC-Claudia Catarig catalinrebegea Data 2 septembrie 2014 15:54:20
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <cstdio>
#define Nmax 100005

using namespace std;

int a[Nmax],N,K;

inline bool Ok(long long x)
{
    int i,j;
    long long s=0;
    for(i=N;i && a[i]>x;--i);
    for(j=1;j<=i;++j)
        s+=a[j];
    s+=x*(N-i);
    if(s>=x*K)
        return true;
    return false;
}

int main()
{
    int i;
    long long st=1,dr=0,mij,sol=0;
    freopen ("grupuri.in","r",stdin);
    freopen ("grupuri.out","w",stdout);
    scanf("%d%d", &K,&N);
    for(i=1;i<=N;++i)
    {
        scanf("%d", &a[i]);
        dr+=a[i];
    }
    dr=dr/K+1;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(Ok(mij))
        {
            sol=mij;
            st=mij+1;
        }
        else
            dr=mij-1;
    }
    printf("%lld\n", sol);
    return 0;
}