AT_pakencamp_2024_day2_d Double Mochi
Description
パケン国には、年の初めに縦に餅を重ねた縁起物「ダブル餅」を飾る風習があります。このダブル餅は次の性質を持ちます。
- 上から順に重ねた餅の重さをそれぞれ $ V_1, V_2, \dots, V_n $ (餅の個数を $ n $ とする)としたとき、すべての $ i $ ( $ 1 \leq i \leq n-1 $ ) に対して $ 2 \times V_i \leq V_{i+1} $ が成り立つ。
パケン国の住民であるパケ子さんは $ 1 $ から $ N $ までの番号が付いた $ N $ 個の餅を持っています。餅 $ i $ ( $ 1 \leq i \leq N $ ) の重さは $ W_i $ です。 ここで、全ての $ i $ ( $ 1 \leq i \leq N-1 $ ) について $ W_i \leq W_{i+1} $ が成り立ちます。 パケ子さんはあなたに $ Q $ 個の問い合わせをします。 $ i $ 番目の問い合わせは、「 $ L_i $ 番から $ R_i $ 番の番号が付いた餅全てをちょうど 1 つずつ使っていくつかのダブル餅を作るとき、最小でいくつのダブル餅を作ることになるか?」という内容です。それぞれに対して求める最小個数を回答してください。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ Q $ $ W_1 $ $ W_2 $ $ \ldots $ $ W_N $ $ L_1 $ $ R_1 $ $ L_2 $ $ R_2 $ $ \vdots $ $ L_Q $ $ R_Q $
Output Format
$ Q $ 行出力せよ。 $ i $ 行目には $ i $ 番目の問い合わせに対する答えを出力せよ。
Explanation/Hint
### 小課題
1. ( $ 1 $ 点) $ N \leq 6 $ , $ Q = 1 $
2. ( $ 4 $ 点) $ N \leq 16 $ , $ Q = 1 $
3. ( $ 10 $ 点) $ N \leq 2000 $ , $ Q = 1 $
4. ( $ 10 $ 点) $ Q = 1 $
5. ( $ 75 $ 点) 追加の制約はない
### Sample Explanation 1
$ 1 $ 番目の問い合わせでは、使う餅の重さはそれぞれ $ 3,4,6,8,16 $ です。
- 重さが $ 3 $ と $ 6 $ の餅 を使ったダブル餅
- 重さが $ 4,8,16 $ の餅 を使ったダブル餅
このように $ 2 $ つのダブル餅を作ることで、作るダブル餅の個数は $ 2 $ 個 となり、これが最小です。
$ 2 $ 番目の問い合わせでは、使う餅の重さは $ 3 $ のみです。この場合、作るダブル餅の個数は必ず $ 1 $ 個 になります。
餅が $ 1 $ つだけでも、それ自体でダブル餅として扱うことに注意してください。
$ 3 $ 番目の問い合わせでは、使う餅の重さはそれぞれ $ 2,3,3,4,6,8,16 $ です。
- 重さが $ 3 $ と $ 6 $ の餅 を使ったダブル餅
- 重さが $ 2,4,8,16 $ の餅 を使ったダブル餅
- 重さが $ 3 $ の餅単体 で構成されるダブル餅
このように $ 3 $ 個のダブル餅 を作ることで、作るダブル餅の個数は $ 3 $ 個 となり、これが最小です。
このサンプルは小課題 $ 5 $ の制約を満たします。
### Constraints
- $ 1 \leq N \leq 2 \times 10^5 $
- $ 1 \leq Q \leq 2 \times 10^5 $
- $ 1 \leq W_i \leq 10^9 $ ( $ 1 \leq i \leq N $ )
- $ 1 \leq L_i \leq R_i \leq N $ ( $ 1 \leq i \leq Q $ )
- $ W_i \leq W_{i+1} $ ( $ 1 \leq i \leq N-1 $ )
- 入力は全て整数