-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path085.py
More file actions
56 lines (47 loc) · 1.32 KB
/
085.py
File metadata and controls
56 lines (47 loc) · 1.32 KB
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
from operator import itemgetter
limit = 2 * (10 ** 6)
des_res = [0] * (limit + 1)
T = int(input())
d = {}
for i in range(1, 53):
j = i
while i * j * (i + 1) * (j + 1) // 4 <= limit:
mul = (i, j)
val = i * j * (i + 1) * (j + 1) // 4
j = j + 1
d[mul] = val
l_t = sorted(d.items(), key=itemgetter(1))
d_l = []
a_l = []
idx = 0
while idx < len(l_t) - 1:
if l_t[idx][1] < l_t[idx + 1][1]:
d_l.append(l_t[idx][1])
a_l.append(l_t[idx][0][0] * l_t[idx][0][1])
else:
current = l_t[idx][0][0] * l_t[idx][0][1]
while l_t[idx][1] == l_t[idx + 1][1]:
idx = idx + 1
if current < l_t[idx][0][0] * l_t[idx][0][1]:
current = l_t[idx][0][0] * l_t[idx][0][1]
d_l.append(l_t[idx][1])
a_l.append(current)
idx = idx + 1
d_l.append(l_t[idx][1])
a_l.append(l_t[idx][0][0] * l_t[idx][0][1])
idx = 0
for i in range(1, len(des_res)):
if idx == len(d_l) - 1:
des_res[i] = a_l[idx]
else:
val = abs(d_l[idx] - i) - abs(d_l[idx + 1] - i)
if val < 0:
des_res[i] = a_l[idx]
elif val == 0:
des_res[i] = max(a_l[idx], a_l[idx + 1])
else:
des_res[i] = a_l[idx + 1]
idx = idx + 1
for _ in range(T):
N = int(input())
print(des_res[N])