Cod sursa(job #2123623)
Utilizator | Marius Nicoli mariusn01 | Data | 6 februarie 2018 14:15:14 |
---|---|---|---|
Problema | Grupuri | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.6 kb |
#include <fstream>
using namespace std;
long long a[100010], n, k, suma, i, gmax, mid, st, dr, s;
int main () {
ifstream fin ("grupuri.in");
ofstream fout("grupuri.out");
fin>>k>>n;
for (i=1;i<=n;i++) {
fin>>a[i];
suma += a[i];
}
gmax = suma/k;
st = 1;
dr = gmax;
while (st <= dr) {
mid = st + (dr - st)/2;
s = 0;
for (i=1;i<=n;i++)
s+=min(mid, a[i]);
if (s >= k * mid)
st = mid+1;
else
dr = mid-1;
}
fout<<dr;
return 0;
}