Cod sursa(job #1219484)

Utilizator DanielRusuDaniel Rusu DanielRusu Data 14 august 2014 12:50:45
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<fstream>
#include<algorithm>
#define NMAX 100010

using namespace std;

long long a[NMAX], aux[NMAX], sum;
int n, k;

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

bool cmp(int A, int B)
{
    return B<A;
}

void Citeste()
{
    int i;
    f>>k>>n;
    for (i=1; i<=n; ++i)
    {
        f>>a[n-i+1];
        sum+=a[n-i+1];
    }
}

bool valid(long long x)
{
    int i;
    long long s=0;

    for (i=1; i<=n; ++i)
        if (a[i]<x) s+=a[i];
        else s+=x;
    if (k*x<=s) return 1;
    return 0;
}

void Solve()
{
    long long st=1, dr=sum/k, mij, sol=0;

    while (st<=dr)
    {
        mij=(st+dr)/2;
        if (valid(mij))
        {
            sol=mij;
            st=mij+1;
        }
        else dr=mij-1;
    }
    g<<sol<<"\n";
}

int main()
{
    Citeste();
    Solve();
    f.close();
    g.close();
    return 0;
}