Cod sursa(job #1501279)

Utilizator antanaAntonia Boca antana Data 13 octombrie 2015 10:34:53
Problema Grupuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <iostream>
#include<cstdio>
using namespace std;
int v[100001];
int main()
{
    freopen("grupuri.in", "r", stdin);
    freopen("grupuri.out", "w", stdout);
    long long n, k, i, l1, l2, mij, s=0, rasp=0, sum;
    scanf("%I64d%I64d", &k, &n);
    for(i=1;i<=n;i++){
        scanf("%d", &v[i]);
        s+=v[i];
    }
    l1=1;l2=s/k;
    while(l1<=l2)
    {
        mij=(l1+l2)/2;
        sum=0;
        for(i=1;i<=n;i++){
            if(v[i]<=mij)
                sum+=v[i];
            else sum+=mij;
        }
        if(sum<mij*k)
            l2=mij-1;
        else{
                rasp=mij;
                l1=mij+1;
        }
    }
    printf("%I64d", rasp);
    return 0;
}