C. Prairie Partition

Codeforces
IDCF806C
Time2000ms
Memory256MB
Difficulty
binary searchgreedy
It can be shown that any positive integer _x_ can be uniquely represented as _x_ = 1 + 2 + 4 + ... + 2_k_ - 1 + _r_, where _k_ and _r_ are integers, _k_ ≥ 0, 0 < _r_ ≤ 2_k_. Let's call that representation prairie partition of _x_. For example, the prairie partitions of 12, 17, 7 and 1 are: <center>12 = 1 + 2 + 4 + 5,17 = 1 + 2 + 4 + 8 + 2, 7 = 1 + 2 + 4, 1 = 1. </center>Alice took a sequence of positive integers (possibly with repeating elements), replaced every element with the sequence of summands in its prairie partition, arranged the resulting numbers in non-decreasing order and gave them to Borys. Now Borys wonders how many elements Alice's original sequence could contain. Find all possible options! ## Input The first line contains a single integer _n_ (1 ≤ _n_ ≤ 105) — the number of numbers given from Alice to Borys. The second line contains _n_ integers _a_1, _a_2, ..., _a__n_ (1 ≤ _a__i_ ≤ 1012; _a_1 ≤ _a_2 ≤ ... ≤ _a__n_) — the numbers given from Alice to Borys. ## Output Output, **in increasing order**, all possible values of _m_ such that there exists a sequence of positive integers of length _m_ such that if you replace every element with the summands in its prairie partition and arrange the resulting numbers in non-decreasing order, you will get the sequence given in the input. If there are no such values of _m_, output a single integer _\-1_. [samples] ## Note In the first example, Alice could get the input sequence from \[6, 20\] as the original sequence. In the second example, Alice's original sequence could be either \[4, 5\] or \[3, 3, 3\].
Samples
Input #1
8
1 1 2 2 3 4 5 8
Output #1
2
Input #2
6
1 1 1 2 2 2
Output #2
2 3
Input #3
5
1 2 4 4 4
Output #3
\-1
API Response (JSON)
{
  "problem": {
    "name": "C. Prairie Partition",
    "description": {
      "content": "It can be shown that any positive integer _x_ can be uniquely represented as _x_ = 1 + 2 + 4 + ... + 2_k_ - 1 + _r_, where _k_ and _r_ are integers, _k_ ≥ 0, 0 < _r_ ≤ 2_k_. Let's call that representa",
      "description_type": "Markdown"
    },
    "platform": "Codeforces",
    "limit": {
      "time_limit": 2000,
      "memory_limit": 262144
    },
    "difficulty": "None",
    "is_remote": true,
    "is_sync": true,
    "sync_url": null,
    "sign": "CF806C"
  },
  "statements": [
    {
      "statement_type": "Markdown",
      "content": "It can be shown that any positive integer _x_ can be uniquely represented as _x_ = 1 + 2 + 4 + ... + 2_k_ - 1 + _r_, where _k_ and _r_ are integers, _k_ ≥ 0, 0 < _r_ ≤ 2_k_. Let's call that representa...",
      "is_translate": false,
      "language": "English"
    }
  ]
}
Full JSON Raw Segments