#include <iostream>
#include <vector>
#include <unordered_map>
#include <algorithm>
using namespace std;
int main() {
vector<int> v{12,8,8,6,4,3,3};
std::vector<int> result;
std::unordered_map<int, int> hashMap;
bool update = false;
for(auto cur : v) {
hashMap[cur]++;
}
do {
update = false;
for (auto cur : hashMap) {
if (cur.second == 2) {
hashMap[cur.first + 1]++;
hashMap.erase(cur.first);
update = true;
}
}
} while(update);
for (auto cur : hashMap) {
result.push_back(cur.first);
}
std::sort(result.begin(), result.end(), std::greater<int>());
v = result;
for (auto&x : result)std::cout << x << ".";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KI2luY2x1ZGUgPGFsZ29yaXRobT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCgoKaW50IG1haW4oKSB7CiAgdmVjdG9yPGludD4gdnsxMiw4LDgsNiw0LDMsM307CiAgc3RkOjp2ZWN0b3I8aW50PiByZXN1bHQ7CiAgc3RkOjp1bm9yZGVyZWRfbWFwPGludCwgaW50PiBoYXNoTWFwOwogIGJvb2wgdXBkYXRlID0gZmFsc2U7CiAgICBmb3IoYXV0byBjdXIgOiB2KSB7CiAgICAgIGhhc2hNYXBbY3VyXSsrOwogICAgfQogICAgZG8gewogICAgCQogICAgICB1cGRhdGUgPSBmYWxzZTsKICAgICAgZm9yIChhdXRvIGN1ciA6IGhhc2hNYXApIHsKICAgICAgICBpZiAoY3VyLnNlY29uZCA9PSAyKSB7CiAgICAgICAgICBoYXNoTWFwW2N1ci5maXJzdCArIDFdKys7CiAgICAgICAgICBoYXNoTWFwLmVyYXNlKGN1ci5maXJzdCk7CiAgICAgICAgICB1cGRhdGUgPSB0cnVlOwogICAgICAgIH0KICAgICAgfSAKICAgIH0gd2hpbGUodXBkYXRlKTsKICAgIGZvciAoYXV0byBjdXIgOiBoYXNoTWFwKSB7CiAgICAgICAgICByZXN1bHQucHVzaF9iYWNrKGN1ci5maXJzdCk7CiAgICAgIH0gCiAgc3RkOjpzb3J0KHJlc3VsdC5iZWdpbigpLCByZXN1bHQuZW5kKCksIHN0ZDo6Z3JlYXRlcjxpbnQ+KCkpOwogIHYgPSByZXN1bHQ7CgogIGZvciAoYXV0byZ4IDogcmVzdWx0KXN0ZDo6Y291dCA8PCB4IDw8ICIuIjsKICByZXR1cm4gMDsKfQ==