int[] weakNumbers(int n) {
Map<Integer, Integer> weaknessmap = new HashMap<>();
int max = 0;
for (int i = 1; i <= n; i++) {
int w = weakness(i);
if (weaknessmap.containsKey(w)) weaknessmap.put(w, weaknessmap.get(w) + 1);
else weaknessmap.put(w, 1);
if (max < w) max = w;
}
return new int[]{max, weaknessmap.get(max)};
}
int weakness(int x) {
int nbx = nbdiv(x), res = 0;
for (int i = 1; i < x; i++) {
int nb = nbdiv(i);
if (nb > nbx) res++;
}
return res;
}
int nbdiv(int x) {
int res = 2;
for (int i = 2; i < x; i++) if (x % i == 0) res++;
return res;
}