#include<vector>
#include<iostream>
#include<algorithm>
int main() {
std::vector<int> values{0, 10, 20, 30, 40, 50, 60, 70, 80, 90};
std::vector<size_t> indexes_to_move{2,4};
size_t destination_index = 6;
if(destination_index > values.size()) throw std::runtime_error("Come on, bro.");
for(auto const& val : values) std::cout << val << ',';
std::cout << std::endl;
for(size_t _index = 0; _index < indexes_to_move.size(); _index++) {
size_t index = indexes_to_move[indexes_to_move.size() - _index - 1]; //We need to iterate in reverse.
if(index >= values.size()) throw std::runtime_error("We dun goofed.");
if(index >= destination_index) throw std::runtime_error("We goofed in a different way.");
std::rotate(values.begin() + index, values.begin() + index + 1, values.begin() + destination_index);
destination_index--;
}
for(auto const& val : values) std::cout << val << ',';
std::cout << std::endl;
return 0;
}
I2luY2x1ZGU8dmVjdG9yPgojaW5jbHVkZTxpb3N0cmVhbT4KI2luY2x1ZGU8YWxnb3JpdGhtPgoKaW50IG1haW4oKSB7CglzdGQ6OnZlY3RvcjxpbnQ+IHZhbHVlc3swLCAxMCwgMjAsIDMwLCA0MCwgNTAsIDYwLCA3MCwgODAsIDkwfTsKCXN0ZDo6dmVjdG9yPHNpemVfdD4gaW5kZXhlc190b19tb3ZlezIsNH07CglzaXplX3QgZGVzdGluYXRpb25faW5kZXggPSA2OwoJaWYoZGVzdGluYXRpb25faW5kZXggPiB2YWx1ZXMuc2l6ZSgpKSB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoIkNvbWUgb24sIGJyby4iKTsKCQoJZm9yKGF1dG8gY29uc3QmIHZhbCA6IHZhbHVlcykgc3RkOjpjb3V0IDw8IHZhbCA8PCAnLCc7CglzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwoJCglmb3Ioc2l6ZV90IF9pbmRleCA9IDA7IF9pbmRleCA8IGluZGV4ZXNfdG9fbW92ZS5zaXplKCk7IF9pbmRleCsrKSB7CgkJc2l6ZV90IGluZGV4ID0gaW5kZXhlc190b19tb3ZlW2luZGV4ZXNfdG9fbW92ZS5zaXplKCkgLSBfaW5kZXggLSAxXTsgLy9XZSBuZWVkIHRvIGl0ZXJhdGUgaW4gcmV2ZXJzZS4KCQlpZihpbmRleCA+PSB2YWx1ZXMuc2l6ZSgpKSB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoIldlIGR1biBnb29mZWQuIik7CgkJaWYoaW5kZXggPj0gZGVzdGluYXRpb25faW5kZXgpIHRocm93IHN0ZDo6cnVudGltZV9lcnJvcigiV2UgZ29vZmVkIGluIGEgZGlmZmVyZW50IHdheS4iKTsKCQkKCQlzdGQ6OnJvdGF0ZSh2YWx1ZXMuYmVnaW4oKSArIGluZGV4LCB2YWx1ZXMuYmVnaW4oKSArIGluZGV4ICsgMSwgdmFsdWVzLmJlZ2luKCkgKyBkZXN0aW5hdGlvbl9pbmRleCk7CgkJZGVzdGluYXRpb25faW5kZXgtLTsKCX0KCQoJZm9yKGF1dG8gY29uc3QmIHZhbCA6IHZhbHVlcykgc3RkOjpjb3V0IDw8IHZhbCA8PCAnLCc7CglzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwoJcmV0dXJuIDA7Cn0=
0,10,20,30,40,50,60,70,80,90,
0,10,30,50,20,40,60,70,80,90,