Cod sursa(job #869725)

Utilizator LgregL Greg Lgreg Data 2 februarie 2013 05:18:28
Problema Grupuri Scor 82
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
int v[101010],N,K;
long long S;
int check(int x)
{
    int 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;
}
int caut()
{
int st=1,dr=S/K,ret;
    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("%d%d",&K,&N);
for(int i=1;i<=N;++i)
    {
        scanf("%d",&v[i]);
        S+=v[i];
    }

    printf("%d",caut());
return 0;
}