Cod sursa(job #869728)

Utilizator LgregL Greg Lgreg Data 2 februarie 2013 05:21:45
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
long long v[101010],N,K;
long long S;
int check(int x)
{
    long long sum=0;
for(int i=1;i<=N;++i)
        if(v[i]<=x)
            sum+=v[i];
        else sum+=x;
if(sum>=x*K)
    return 1;
return 0;
}
long long caut()
{
long long st=1,dr=S/K;
long long ret=0;
    while(st<=dr)
    {
        int mij=(st+dr)/2;
    //    printf("%d %d %d\n",st,dr,mij);
        if(check(mij))
        {
            ret=mij;
            st=mij+1;
        }
        else dr=mij-1;
    }
    return ret;
}
int main()
{
freopen("grupuri.in","r",stdin);
freopen("grupuri.out","w",stdout);
scanf("%lld%lld",&K,&N);
for(int i=1;i<=N;++i)
    {
        scanf("%lld",&v[i]);
        S+=v[i];
    }

    printf("%lld\n",caut());
return 0;
}