#include <stdexcept>
#include <iostream>
#include <deque>
class TrainComposition
{
//std::vector<int> wagons;
public:
std::deque<int> wagons;
void attachWagonFromLeft(int wagonId)
{
wagons.push_front(wagonId);
}
void attachWagonFromRight(int wagonId)
{
wagons.push_back(wagonId);
}
int detachWagonFromLeft()
{
std::deque<int>::iterator it = wagons.begin();
std::cout << "bigin is:" << *it << '\n';
wagons.pop_front();
return *it;
}
int detachWagonFromRight()
{
std::deque<int>::iterator it = wagons.end();
std::cout<< "end is:" << *it<<'\n';
wagons.pop_back();
return 0;
}
};
#ifndef RunTests
int main()
{
TrainComposition tree;
tree.attachWagonFromLeft(7);
tree.attachWagonFromLeft(13);
std::cout << tree.detachWagonFromRight() << "\n"; // 7
std::cout << tree.detachWagonFromLeft() << "\n"; // 13
return 0;
}
#endif
I2luY2x1ZGUgPHN0ZGV4Y2VwdD4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZGVxdWU+CgpjbGFzcyBUcmFpbkNvbXBvc2l0aW9uCnsKICAgIC8vc3RkOjp2ZWN0b3I8aW50PiB3YWdvbnM7CgpwdWJsaWM6CgogICAgc3RkOjpkZXF1ZTxpbnQ+IHdhZ29uczsKCiAgICB2b2lkIGF0dGFjaFdhZ29uRnJvbUxlZnQoaW50IHdhZ29uSWQpCiAgICB7CiAgICAgICAgd2Fnb25zLnB1c2hfZnJvbnQod2Fnb25JZCk7CiAgICB9CgogICAgdm9pZCBhdHRhY2hXYWdvbkZyb21SaWdodChpbnQgd2Fnb25JZCkKICAgIHsKICAgICAgICB3YWdvbnMucHVzaF9iYWNrKHdhZ29uSWQpOwogICAgfQoKICAgIGludCBkZXRhY2hXYWdvbkZyb21MZWZ0KCkKICAgIHsKICAgICAgICBzdGQ6OmRlcXVlPGludD46Oml0ZXJhdG9yIGl0ID0gd2Fnb25zLmJlZ2luKCk7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJiaWdpbiBpczoiIDw8ICppdCA8PCAnXG4nOwogICAgICAgIHdhZ29ucy5wb3BfZnJvbnQoKTsKICAgICAgICByZXR1cm4gKml0OwogICAgfQoKICAgIGludCBkZXRhY2hXYWdvbkZyb21SaWdodCgpCiAgICB7CiAgICAgICAgc3RkOjpkZXF1ZTxpbnQ+OjppdGVyYXRvciBpdCA9IHdhZ29ucy5lbmQoKTsKICAgICAgICBzdGQ6OmNvdXQ8PCAiZW5kIGlzOiIgPDwgKml0PDwnXG4nOwogICAgICAgIHdhZ29ucy5wb3BfYmFjaygpOwogICAgICAgIHJldHVybiAwOwogICAgfQp9OwoKI2lmbmRlZiBSdW5UZXN0cwppbnQgbWFpbigpCnsKICAgIFRyYWluQ29tcG9zaXRpb24gdHJlZTsKICAgIHRyZWUuYXR0YWNoV2Fnb25Gcm9tTGVmdCg3KTsKICAgIHRyZWUuYXR0YWNoV2Fnb25Gcm9tTGVmdCgxMyk7CiAgICBzdGQ6OmNvdXQgPDwgdHJlZS5kZXRhY2hXYWdvbkZyb21SaWdodCgpIDw8ICJcbiI7IC8vIDcgCiAgICBzdGQ6OmNvdXQgPDwgdHJlZS5kZXRhY2hXYWdvbkZyb21MZWZ0KCkgPDwgIlxuIjsgLy8gMTMKICAgIHJldHVybiAwOwp9CiNlbmRpZg==