CF227A Where do I Turn? 题解

发布时间 2023-11-02 19:14:12作者: 空驶过的是

题目大意:

\(A\)\(B\) 在一条直线上。\(B\)\(C\) 在一条直线上你从 \(A\) 走到了 \(B\)\(C\),问现在应该是直走、左转、还是右转。

思路:

分类讨论:分别求 \(A\)\(B\)\(B\)\(C\) 是什么方向,然后可得 \(A\)\(C\) 的方向。

Code:

#include <bits/stdc++.h>
using namespace std;
#define int long long
int check(int x1, int y1, int x2, int y2)
{
    if (x1 == x2 && y1 <= y2)
        return 0;
    else if (x1 == x2 && y1 >= y2)
        return 1;
    else if (x1 >= x2 && y1 == y2)
        return 2;
    else if (x1 <= x2 && y1 == y2)
        return 3;
    else if (x1 >= x2 && y1 <= y2)
        return 4;
    else if (x1 <= x2 && y1 >= y2)
        return 5;
    else if (x1 >= x2 && y1 >= y2)
        return 6;
    else
        return 7;
}
int xa, ya, xb, yb, xc, yc;
string st[8][8] = {"TOWARDS", "", "LEFT", "RIGHT", "", "", "", "",
                    "", "TOWARDS", "RIGHT", "LEFT", "", "", "", "",
                    "RIGHT", "LEFT", "TOWARDS", "", "", "", "", "",
                    "LEFT", "RIGHT", "", "TOWARDS"};
signed main()
{
    ios::sync_with_stdio(false);
    cin >> xa >> ya;
    cin >> xb >> yb;
    cin >> xc >> yc;
    int p1 = check(xa, ya, xb, yb);// A 到 B 的方向
    int p2 = check(xb, yb, xc, yc);// B 到 C 的方向
    cout << st[p1 % 4][p2 % 4];
    return 0;
}