[LeetCode] Maximum Sized Array

3344. Maximum Sized Array

Given a positive integer s, let A be a 3D array of dimensions n × n × n, where each element A[i][j][k] is defined as:

  • A[i][j][k] = i * (j OR k), where 0 <= i, j, k < n.

Return the maximum possible value of n such that the sum of all elements in array A does not exceed s.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

class Solution {
using i128 = __int128_t;
i128 F(long long n) {
i128 res = 0;
for (int k = 0; k < 61; k++) {
long long blk = 1LL << (k + 1);
long long full = n / blk;
long long rem = n % blk;

long long zeros = full * (1LL << k) + min(rem, (1LL << k));
i128 z2 = (i128)zeros * zeros;
i128 n2 = (i128)n * n;

res += (n2 - z2) * (1LL << k);
}
return res;
}

i128 fn(long long n) {
if (n <= 1) return 0;
return (i128)n * (n - 1) / 2 * F(n);
}
public:
int maxSizedArray(long long s) {
long l = 1, r = 2, res = 1;
while(fn(r) <= s) r<<=1;
while(l <= r) {
long long m = l + (r - l) / 2;
bool ok = (fn(m)) <= s;
if(ok) {
res = m;
l = m + 1;
} else r = m - 1;
}
return res;
}
};
Author: Song Hayoung
Link: https://songhayoung.github.io/2025/11/22/PS/LeetCode/maximum-sized-array/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.