#include <iostream>
#include <list>
using namespace std;
template<class T>
class MyList : public list<T> {
public:
void addInMiddle(const T&);
void printList();
};
template<class T>
void MyList<T>::addInMiddle(const T& x) {
typename list<T>::iterator it = this->begin();
int location = (this->size()) / 2; //where we want to insert the new element
for (int i = 0; i < location; i++) {
it++;
}
this->insert(it,x);
}
template<class T>
void MyList<T>::printList() {
for (const auto &elem : *this) {
cout << elem << " ";
}
cout << endl;
}
int main()
{
MyList<int> list1;
list1.push_back(1);
list1.push_back(2);
list1.push_back(3);
list1.push_back(4);
list1.addInMiddle(5);
list1.printList();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGlzdD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlPGNsYXNzIFQ+CmNsYXNzIE15TGlzdCA6IHB1YmxpYyBsaXN0PFQ+IHsKcHVibGljOgoJdm9pZCBhZGRJbk1pZGRsZShjb25zdCBUJik7Cgl2b2lkIHByaW50TGlzdCgpOwp9OwoKdGVtcGxhdGU8Y2xhc3MgVD4Kdm9pZCBNeUxpc3Q8VD46OmFkZEluTWlkZGxlKGNvbnN0IFQmIHgpIHsKCgl0eXBlbmFtZSBsaXN0PFQ+OjppdGVyYXRvciBpdCA9IHRoaXMtPmJlZ2luKCk7CgoJaW50IGxvY2F0aW9uID0gKHRoaXMtPnNpemUoKSkgLyAyOyAgICAgLy93aGVyZSB3ZSB3YW50IHRvIGluc2VydCB0aGUgbmV3IGVsZW1lbnQKCWZvciAoaW50IGkgPSAwOyBpIDwgbG9jYXRpb247IGkrKykgewoJCWl0Kys7Cgl9Cgl0aGlzLT5pbnNlcnQoaXQseCk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CnZvaWQgTXlMaXN0PFQ+OjpwcmludExpc3QoKSB7Cglmb3IgKGNvbnN0IGF1dG8gJmVsZW0gOiAqdGhpcykgewoJCWNvdXQgPDwgZWxlbSA8PCAiICI7Cgl9Cgljb3V0IDw8IGVuZGw7Cn0KCmludCBtYWluKCkKewoJTXlMaXN0PGludD4gbGlzdDE7CglsaXN0MS5wdXNoX2JhY2soMSk7CglsaXN0MS5wdXNoX2JhY2soMik7CglsaXN0MS5wdXNoX2JhY2soMyk7CglsaXN0MS5wdXNoX2JhY2soNCk7CglsaXN0MS5hZGRJbk1pZGRsZSg1KTsKCWxpc3QxLnByaW50TGlzdCgpOwoJcmV0dXJuIDA7Cn0=