公交线路 思维,分支(女赛)

在这里插入图片描述
思路 :

  • 分类讨论x和y的相对大小关系来确定正向
  • 开两个变量ans表示正向和cnt表示反向,分别考虑正向和反向的情况,如果ans和cnt都等于m(每个站点都符合)说明不确定,如果ans等于则正确,否则wrong
  • 注意数组下标越界,所以条件判断中还要加特判
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
#include <stack>
#include <unordered_set>

using namespace std;

typedef long long ll;

const int N = 15;

int n, m, x, y;
int k[N], p[N];

int main()
{
    
    
    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);

    cin >> n >> x >> y;
    for (int i = 1; i <= n; i ++ ) cin >> k[i];
    cin >> m;
    for (int i = 1; i <= m; i ++ ) cin >> p[i];

    int ans = 0, cnt = 0;

    if (x > y)
    {
    
    
        int a = x - 1, b = x + 1;
        for (int i = 1; i <= m; i ++ )
        {
    
    
            if (a >= 1 && p[i] == k[a])
                ans ++ , a -- ;
            if (b <= n && p[i] == k[b])
                cnt ++ , b ++ ;
        }
    }
    else
    {
    
    
        int a = x + 1, b = x - 1;
        for (int i = 1; i <= m; i ++ )
        {
    
    
            if (a <= n && p[i] == k[a])
                ans ++ , a ++ ;
            if (b >= 1 && p[i] == k[b])
                cnt ++ , b -- ;
        }
    }

    if (ans == m && cnt == m) cout << "Unsure" << endl;
    else if (ans == m) cout << "Right" << endl;
    else cout << "Wrong" << endl;

    return 0;
}

猜你喜欢

转载自blog.csdn.net/m0_51448653/article/details/121239165