Cod sursa(job #1077898)

Utilizator CatalinaRaduCatalina Elena Radu CatalinaRadu Data 11 ianuarie 2014 19:26:31
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f ("grupuri.in");
ofstream g ("grupuri.out");

#define maxn 100001

long long n,k,v[maxn],i,mid,rez,suma;

int check (long long x)
{
    long long s=0;
    for (i=1;i<=n;i++)
         if(v[i]>x)
            s+=x;
         else
            s+=v[i];
     if(s>=x*k)
        return 0;
     return 1;
}

void search_b (long long l, long long r)
{
    mid=(l+r)/2;
    if (check(mid)==1)
      search_b(l,mid-1);
    else
        if (check(mid+1)==1 && check(mid)==0)
          rez=mid;
         else
            search_b(mid+1,r);
}

int main()
{
    f>>k>>n;
    for (i=1;i<=n;i++)
        {
            f>>v[i];
            suma+=v[i];
        }
    search_b(1,suma/k);
    g<<rez;
    f.close();
    g.close();
    return 0;
}