Hints : Add, Divide and Floor
Solve for 2 elements first.
What is the answer for
1
2
3 5
2
4 6
2
3 4
2
4 5
Note that if
a < b
, then (a + x) < (b + x)
. Hence, adding a large x
is useless, since if these elements meet, they’ll meet at some point less than a
. Hence, we only have to look at a small subset for possible values of x
. What are those?
An optimal configuration can be reached using only
0
and 1
as possible values of x
. Why?
Suppose, you use x = 2
instead. Then, (a + x)//2 = 1 + a//2
and (b + x)//2 = 1 + b//2
. Hence, we could’ve as well used x = 0
, since we don’t want to increase the numbers unecessarily.
Suppose, you use x = 3
instead. Then, (a + x)//2 = 1 + (a + 1)//2
, and (b + x)//2 = 1 + (b + 1)//2
. Hence, we could’ve as well used x = 1
, since we don’t want to increase the numbers unecessarily.
So, now we know that x = 0
and x = 1
suffices when dealing with 2 elements. Is it possible to simulate the entire operation. Why?
A simulation works because at each operation
a[i]
is reduced by a factor of 2, meaning it’d reach 1 or 0 in around log(a[i])
steps. We just need to figure out when to use x = 0
and when to use x = 1
.
Assume a < b
.
Consider the case
a = odd
b = odd
// Example (3, 5)
- If you add zero, it goes to
[1, 2]
- If you add one, it goes to
[2, 3]
- Hence, pick
x = 0
a = even
b = even
// Example (4, 6)
- If you add zero, it goes to
[2, 3]
- If you add one, it goes to
[2, 3]
- Hence, pick
x = 0
a = odd
b = even
// Example (3, 4)
- If you add zero, it goes to
[1, 2]
- If you add one, it goes to
[2, 2]
- Hence, pick
x = 1
a = even
b = odd
// Example (4, 5)
- If you add zero, it goes to
[2, 2]
- If you add one, it goes to
[2, 3]
- Hence, pick
x = 0
So, we’ve solved the problem for 2 elements. How do we solve for n
elements?