#include <algorithm>
#include <iostream>
#include <list>
void biswap(std::list<int> &l)
{
if (l.size() < 2)
return;
auto it2 = l.begin();
auto it1 = it2++;
auto e = l.end();
for (;;)
{
if (*it1 < *it2)
std::swap(*it1, *it2);
it1 = it2++;
if (it2 == e)
return;
it1 = it2++;
if (it2 == e)
return;
}
}
int main() {
std::list<int> myList {3, 2, 1, 2, 1, 3, 2};
biswap(myList);
for (int i: myList)
std::cout << i << ", ";
return 0;
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGlzdD4KCnZvaWQgYmlzd2FwKHN0ZDo6bGlzdDxpbnQ+ICZsKQp7CglpZiAobC5zaXplKCkgPCAyKQoJCXJldHVybjsKCWF1dG8gaXQyID0gbC5iZWdpbigpOwoJYXV0byBpdDEgPSBpdDIrKzsKCWF1dG8gZSA9IGwuZW5kKCk7Cglmb3IgKDs7KQoJewoJCWlmICgqaXQxIDwgKml0MikKCQkJc3RkOjpzd2FwKCppdDEsICppdDIpOwoJCWl0MSA9IGl0MisrOwoJCWlmIChpdDIgPT0gZSkKCQkJcmV0dXJuOwoJCWl0MSA9IGl0MisrOwoJCWlmIChpdDIgPT0gZSkKCQkJcmV0dXJuOwoJfQp9CgoKaW50IG1haW4oKSB7CglzdGQ6Omxpc3Q8aW50PiBteUxpc3QgezMsIDIsIDEsIDIsIDEsIDMsIDJ9OwoJYmlzd2FwKG15TGlzdCk7Cglmb3IgKGludCBpOiBteUxpc3QpCgkJc3RkOjpjb3V0IDw8IGkgPDwgIiwgIjsKCXJldHVybiAwOwp9