21.11.04 A 公交线路

题目链接:https://codeforces.com/gym/103389/problem/A

 

题目的大意就是,到第每i站,该站会报出a[i]个字,表示地点名称,现在给出了a序列,起点在x终点在y,现在已经经过了m个站点,现在你需要根据报出的到每个站点字的数量来判断是不是走错了方向,题目保证数据合法。

 

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int n,x,y,k[11],m,p[11];
int main()
{
    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 s=(y-x)/abs(y-x);        //根据这个来判断出发开始是往左走还是往右走 
    int pos=x+s,cnt=1;
    while(cnt<=m)
    {
        if(k[pos]!=p[cnt])        //数据范围足够小,根据走的方向的每一步都判断一下 
        {
            printf("Wrong");    //出错就结束 
            return 0;
        }
        pos+=s;
        cnt++;
    }
    //没有出错还需要判断是不是因为就算是往反方向走也是和正方向走的序列一样 
    for(int i=1;i<=m;i++)
    {
        if(k[x+s*i]!=k[x-s*i])
        {
            printf("Right");//正反方向出现的序列是不一样的说明绝对没错 ,结束 
            return 0;
        }
    }
    //如果正反方向一样,是不能确定是否走反了方向 
    printf("Unsure");
}

 

posted @ 2021-11-05 15:46  Manjusaka丶梦寒  阅读(106)  评论(0编辑  收藏  举报