CF1514D Cut and Stick
Description
Baby Ehab has a piece of Cut and Stick with an array $ a $ of length $ n $ written on it. He plans to grab a pair of scissors and do the following to it:
- pick a range $ (l, r) $ and cut out every element $ a_l $ , $ a_{l + 1} $ , ..., $ a_r $ in this range;
- stick some of the elements together in the same order they were in the array;
- end up with multiple pieces, where every piece contains some of the elements and every element belongs to some piece.
More formally, he partitions the sequence $ a_l $ , $ a_{l + 1} $ , ..., $ a_r $ into subsequences. He thinks a partitioning is beautiful if for every piece (subsequence) it holds that, if it has length $ x $ , then no value occurs strictly more than $ \lceil \frac{x}{2} \rceil $ times in it.
He didn't pick a range yet, so he's wondering: for $ q $ ranges $ (l, r) $ , what is the minimum number of pieces he needs to partition the elements $ a_l $ , $ a_{l + 1} $ , ..., $ a_r $ into so that the partitioning is beautiful.
A sequence $ b $ is a subsequence of an array $ a $ if $ b $ can be obtained from $ a $ by deleting some (possibly zero) elements. Note that it does not have to be contiguous.
Input Format
N/A
Output Format
N/A
Explanation/Hint
In the first query, you can just put the whole array in one subsequence, since its length is $ 6 $ , and no value occurs more than $ 3 $ times in it.
In the second query, the elements of the query range are $ [3,2,3,3] $ . You can't put them all in one subsequence, since its length is $ 4 $ , and $ 3 $ occurs more than $ 2 $ times. However, you can partition it into two subsequences: $ [3] $ and $ [2,3,3] $ .