奶牛芭蕾

#include <iostream>
#include <cstring>
#include <algorithm>
#include <unordered_map>

#define x first
#define y second

using namespace std;

typedef pair<int, int> PII;

PII p[4] = {{0, 1}, {1, 1}, {0, 0}, {1, 0}};
int dx[4] = {0, 1, 0, -1}, dy[4] = {1, 0, -1, 0};
unordered_map<string, int> id = {{"FL", 0}, {"FR", 1}, {"RL", 2}, {"RR", 3}};
unordered_map<char, int> turn = {{'F', 0}, {'B', 2}, {'L', 3}, {'R', 1}};

void rotate(PII& a, PII& b)
{
    b.x -= a.x, b.y -= a.y;
    int x = b.y, y = -b.x;
    b.x = a.x + x, b.y = a.y + y;
}

int main()
{
    int n;
    cin >> n;

    int minx = 0, maxx = 1, miny = 0, maxy = 1;

    int d = 0;
    while (n -- )
    {
        string str;
        cin >> str;
        int k = id[str.substr(0, 2)];
        char c = str[2];
        if (c != 'P')
        {
            int t = (d + turn[c]) % 4;
            p[k].x += dx[t], p[k].y += dy[t];
        }
        else
        {
            for (int i = 0; i < 4; i ++ )
                if (i != k)
                    rotate(p[k], p[i]);
            d = (d + 1) % 4;
        }

        for (int i = 0; i < 4; i ++ )
            for (int j = 0; j < i; j ++ )
                if (p[i] == p[j])
                {
                    puts("-1");
                    return 0;
                }

        for (int i = 0; i < 4; i ++ )
        {
            minx = min(minx, p[i].x);
            miny = min(miny, p[i].y);
            maxx = max(maxx, p[i].x);
            maxy = max(maxy, p[i].y);
        }
    }

    cout << (maxx - minx + 1) * (maxy - miny + 1) << endl;
    return 0;
}
全部评论

相关推荐

点赞 评论 收藏
分享
03-12 14:52
已编辑
长沙学院 Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
正在热议
更多
# 春招至今,你的战绩如何? #
10927次浏览 93人参与
# 你的实习产出是真实的还是包装的? #
1939次浏览 42人参与
# 米连集团26产品管培生项目 #
6021次浏览 216人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7623次浏览 43人参与
# 简历第一个项目做什么 #
31733次浏览 339人参与
# 重来一次,我还会选择这个专业吗 #
433525次浏览 3926人参与
# MiniMax求职进展汇总 #
24098次浏览 309人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187188次浏览 1122人参与
# 牛客AI文生图 #
21445次浏览 238人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152434次浏览 888人参与
# 研究所笔面经互助 #
118956次浏览 577人参与
# 简历中的项目经历要怎么写? #
310336次浏览 4217人参与
# AI时代,哪些岗位最容易被淘汰 #
63781次浏览 826人参与
# 面试紧张时你会有什么表现? #
30508次浏览 188人参与
# 你今年的平均薪资是多少? #
213126次浏览 1039人参与
# 你怎么看待AI面试 #
180113次浏览 1258人参与
# 高学历就一定能找到好工作吗? #
64331次浏览 620人参与
# 你最满意的offer薪资是哪家公司? #
76532次浏览 374人参与
# 我的求职精神状态 #
448117次浏览 3129人参与
# 正在春招的你,也参与了去年秋招吗? #
363485次浏览 2638人参与
# 腾讯音乐求职进展汇总 #
160670次浏览 1112人参与
# 校招笔试 #
471103次浏览 2964人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务