#include #include #include #include bool isValidNumber(std::string& n) { return (isdigit(n[0]) || ((n[0] == '-') && isdigit(n[1]))); } void handleSum(std::vector& numbers) { int lastNum = numbers[numbers.size() - 1]; int secondLast = numbers[numbers.size() - 2]; numbers.pop_back(); numbers.pop_back(); numbers.push_back(lastNum + secondLast); } void handleSubtract(std::vector& numbers) { int lastNum = numbers[numbers.size() - 1]; int secondLast = numbers[numbers.size() - 2]; numbers.pop_back(); numbers.pop_back(); numbers.push_back(lastNum - secondLast); } void handleConcat(std::vector& numbers) { int lastNum = numbers[numbers.size() - 1]; int secondLast = numbers[numbers.size() - 2]; numbers.pop_back(); numbers.pop_back(); std::string firstNum = std::to_string(secondLast); std::string secondNum = std::to_string(lastNum); std::string result = firstNum + secondNum; numbers.push_back(std::stoi(result)); } void discard(std::vector& numbers) { numbers.pop_back(); } int main() { std::vector numbers; std::string input; while (std::cin >> input && input != "end") { if (isValidNumber(input)) { numbers.push_back(std::stoi(input)); continue; } if (input == "sum") handleSum(numbers); else if (input == "subtract") handleSubtract(numbers); else if (input == "concat") handleConcat(numbers); else if (input == "discard") discard(numbers); } for (auto& n : numbers) std::cout << n << std::endl; }