There is an array sorted in descending order. How to make two identical elements disappear and instead enter one to 1 more.

that is, something like this

[12 8 8 6 4 3 3] => [12 9 6 5 ] 

    2 answers 2

    Something like this .

     #include <iostream> #include <vector> int main () { std::vector <int> v = {12, 8, 8, 6, 4, 3, 3}; for(size_t i=0; i<v.size()-1; i++) { if(v[i]==v[i+1]) { v[i]++; v.erase(v.begin()+i+1); i=0; } } for(auto&x:v)std::cout << x << " "; return 0; } 

      In general, if someone will also look for something like that, they helped in the English version.

       vector<int> v(c, c + mn); 

      where с is an array, mn is long.

       for (int i = 0; i < v.size() - 1; i++) { if (v[i] == v[i + 1]) { while (i + 1<v.size() && v[i + 1] == v[i]) v.erase(v.begin() + i + 1); v[i]++; i = 0; } } for (auto&x : v)std::cout << x << ".";