def
merge(order, freq, i, mid, j):
tempOrder
=
[]
temp, index
=
mid
+
1
,
-
1
for
i
in
range
(j
-
i
+
1
):
tempOrder.append(
0
)
while
i <
=
mid
and
temp <
=
j:
index
+
=
1
if
freq[order[i]] <
=
freq[order[temp]]:
tempOrder[index]
=
order[i]
i
+
=
1
else
:
tempOrder[index]
=
order[temp]
temp
+
=
1
while
i <
=
mid:
index
+
=
1
tempOrder[index]
=
order[i]
i
+
=
1
while
temp <
=
j:
index
+
=
1
tempOrder[index]
=
order[temp]
temp
+
=
1
for
i
in
range
(index,
-
1
,
-
1
):
order[j]
=
tempOrder[index]
j
-
=
1
def
divide(order, freq, i, j):
if
i >
=
j:
return
mid
=
i
/
/
2
+
j
/
/
2
divide(order, freq, i, mid)
divide(order, freq, mid
+
1
, j)
merge(order, freq, i, mid, j)
def
orderProcessses(a, n, q):
freq
=
[]
for
i
in
range
(n):
store
=
a[i]
/
/
q
+
((a[i]
%
q) >
0
)
freq.append(store)
order
=
[]
for
i
in
range
(
4
):
order.append(
0
)
for
i
in
range
(n):
order[i]
=
i
divide(order, freq,
0
, n
-
1
)
order[
1
], order[
2
]
=
order[
2
], order[
1
]
for
i
in
range
(n):
print
(order[i], end
=
" "
)
print
()
arr
=
[
3
,
7
,
4
]
q
=
3
n
=
len
(arr)
orderProcessses(arr, n, q)