Cod sursa(job #2240713)

Utilizator giotoPopescu Ioan gioto Data 13 septembrie 2018 21:37:10
Problema Grupuri Scor 64
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <bits/stdc++.h>
using namespace std;

int n, k;
int a[100005];
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", &a[i]);

    sort(a + 1, a + n + 1);
    int st = 1, dr = 1000001;
    while(st <= dr){
        int mij = (st + dr) / 2;
        int s = 0, nr = 0;
        for(int i = n; i >= 1 ; --i){
            s = s + min(a[i], mij);
            if(s >= mij) s = s - mij, ++nr;
        }
        if(nr >= k) st = mij + 1;
        else dr = mij - 1;
    }
    printf("%d", dr);


    return 0;
}