1class Robot {2private:3int width, height, perimeter;4int dir = 0;5int x = 0, y = 0;6map<int, string> mp = {{0, "East"}, {1, "North"}, {2, "West"}, {3, "South"}};78public:9Robot(int width, int height) {10this->width = width;11this->height = height;12this->perimeter = 2 * (height + width) - 4;13}1415void step(int num) {16if (!num) return;17num = num % perimeter;18if (x == 0 && y == 0 && num == 0) dir = 3;19while (num--) {20if (x == 0 && y == 0)21dir = 0;22else if (x == width - 1 && y == 0)23dir = 1;24else if (x == width - 1 && y == height - 1)25dir = 2;26else if (x == 0 && y == height - 1)27dir = 3;2829if (dir == 0) x += 1;30if (dir == 1) y += 1;31if (dir == 2) x -= 1;32if (dir == 3) y -= 1;33}34}3536vector<int> getPos() {37return {x, y};38}3940string getDir() {41return mp[dir];42}43};