Submission #30284774


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for(int i = 0; i < (n); ++i)

std::vector<std::string> split(const std::string& text, const char delim);

using ll = long long int;
using llu = unsigned long long int;

enum class Task : char {
    MOVE = 'S',
    ROTATE = 'R',
};

enum class Direction : int {
    UP = 0,
    DOWN,
    LEFT,
    RIGHT,
    SIZE,
};

struct Point{
    Point(const int y, const int x):y(y),x(x){};
    int y;
    int x;
};

const map<Direction, Point> dir_map = {
    make_pair(Direction::UP, Point(1, 0)),
    make_pair(Direction::DOWN, Point(-1, 0)),
    make_pair(Direction::LEFT, Point(0, -1)),
    make_pair(Direction::RIGHT, Point(0, 1)),
};

struct Person{
    Person(const int y, const int x, const Direction dir):point(y, x),dir(dir){
    };

    void move(){
        Point distance = dir_map.at(this->dir);
        this->point.y += distance.y;
        this->point.x += distance.x;
    };

    void rotate(){
        if (this->dir == Direction::UP) {
            this->dir = Direction::RIGHT;
        } else if (this->dir == Direction::DOWN) {
            this->dir = Direction::LEFT;
        } else if (this->dir == Direction::LEFT) {
            this->dir = Direction::UP;
        } else if (this->dir == Direction::RIGHT) {
            this->dir = Direction::DOWN;
        }
    };

    Direction dir;
    Point point;
};

int main(){
    string buffer;
    getline(cin, buffer);
    const int N = stoi(buffer);

    getline(cin, buffer);
    const string T(std::move(buffer));

    Person person(0, 0, Direction::RIGHT);

    for (const char task : T) {
        if (static_cast<Task>(task) == Task::MOVE) {
            person.move();
        } else if (static_cast<Task>(task) == Task::ROTATE) {
            person.rotate();
        }
    }

    cout << person.point.x << " " << person.point.y << endl;

    return 0;
}

std::vector<std::string> split(const std::string& text, const char delim) {
    std::vector<std::string> item_list;
    std::stringstream ss(text);
    std::string buffer;

    while ( std::getline(ss, buffer, delim) ) {
        if (!buffer.empty()) {
                item_list.emplace_back(buffer);
        }
    }

    return item_list;
}

Submission Info

Submission Time
Task B - Go Straight and Turn Right
User low10603
Language C++ (GCC 9.2.1)
Score 200
Code Size 2319 Byte
Status AC
Exec Time 10 ms
Memory 3756 KiB

Compile Error

./Main.cpp: In constructor ‘Person::Person(int, int, Direction)’:
./Main.cpp:59:11: warning: ‘Person::point’ will be initialized after [-Wreorder]
   59 |     Point point;
      |           ^~~~~
./Main.cpp:58:15: warning:   ‘Direction Person::dir’ [-Wreorder]
   58 |     Direction dir;
      |               ^~~
./Main.cpp:37:5: warning:   when initialized here [-Wreorder]
   37 |     Person(const int y, const int x, const Direction dir):point(y, x),dir(dir){
      |     ^~~~~~
./Main.cpp: In function ‘int main()’:
./Main.cpp:65:15: warning: unused variable ‘N’ [-Wunused-variable]
   65 |     const int N = stoi(buffer);
      |               ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 200 / 200
Status
AC × 2
AC × 25
Set Name Test Cases
Sample example0.txt, example1.txt
All 000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, 012.txt, 013.txt, 014.txt, 015.txt, 016.txt, 017.txt, 018.txt, 019.txt, 020.txt, 021.txt, 022.txt, example0.txt, example1.txt
Case Name Status Exec Time Memory
000.txt AC 7 ms 3472 KiB
001.txt AC 2 ms 3412 KiB
002.txt AC 2 ms 3460 KiB
003.txt AC 2 ms 3616 KiB
004.txt AC 2 ms 3592 KiB
005.txt AC 3 ms 3596 KiB
006.txt AC 5 ms 3752 KiB
007.txt AC 9 ms 3748 KiB
008.txt AC 8 ms 3612 KiB
009.txt AC 10 ms 3612 KiB
010.txt AC 7 ms 3652 KiB
011.txt AC 9 ms 3548 KiB
012.txt AC 8 ms 3756 KiB
013.txt AC 6 ms 3720 KiB
014.txt AC 6 ms 3608 KiB
015.txt AC 6 ms 3744 KiB
016.txt AC 7 ms 3728 KiB
017.txt AC 8 ms 3748 KiB
018.txt AC 9 ms 3712 KiB
019.txt AC 8 ms 3744 KiB
020.txt AC 6 ms 3652 KiB
021.txt AC 7 ms 3752 KiB
022.txt AC 9 ms 3720 KiB
example0.txt AC 2 ms 3572 KiB
example1.txt AC 3 ms 3476 KiB