Hints: Monotonic Renumeration
Some of the indices are locked and some are unlocked. A locked index means that there is only one value that will go into that index.
How do you figure out the locked and unlocked indices?
Define last_occ[num]
to be the index of the last occurence of the the integer num
.
Start with 2 sets, locked
and unlocked
. When dealing with index i
, transfer all indices in the range [i + 1, last_occ[a[i]]]
from the locked set to the unlocked set.
Once you’ve computed the locked and unlocked indices, what will the final answer be?
Each index of unlocked set has 2 choices. So the answer is
2^x
where x
is the size of unlocked set.