#include #include using namespace std; template class node { public: node(T key, node* next) : _key{key}, _next{next} {} node(T key) : _key{key}, _next{nullptr} {} const T& key() const { return _key; } T& key() { return _key; } const node*& next() const { return _next; } node*& next() { return _next; } private: T _key; node* _next; }; template class Pila { public: Pila() : _head{nullptr}{} ~Pila() { } Pila* push(T val) { if(!_head) { _head = new node{val, nullptr}; } else { _head = new node{val, _head}; } return this; } node* pop() { if(!_head) return nullptr; node* elem = _head; delete _head; _head = elem->next(); return elem; } bool is_empty() { return _head == nullptr; } private: node* _head; }; int main() { ifstream in("input.txt"); ofstream out("output.txt"); for(int ts = 0; ts < 100; ++ts) { string t; int n; in >> t; switch(t.at(0)) { case 'b': { Pila* stack = new Pila{}; in >> n; bool e; for(int i = 0; i < n; ++i) { in >> e; stack->push(e); } while(!stack->is_empty()) out << stack->pop()->key() << ' '; out << endl; break; } case 'd': { Pila* stack = new Pila{}; in >> n; double e; for(int i = 0; i < n; ++i) { in >> e; stack->push(e); } while(!stack->is_empty()) out << stack->pop()->key() << ' '; out << endl; break; } case 'c': { Pila* stack = new Pila{}; in >> n; char e; for(int i = 0; i < n; ++i) { in >> e; stack->push(e); } while(!stack->is_empty()) out << stack->pop()->key() << ' '; out << endl; break; } case 'i': { Pila* stack = new Pila{}; in >> n; int e; for(int i = 0; i < n; ++i) { in >> e; stack->push(e); } while(!stack->is_empty()) out << stack->pop()->key() << ' '; out << endl; break; } } } in.close(); out.close(); return 0; }