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
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 |
|
|
| 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 |