题目描述
解题思路
根据 m 前后遍历对比一下,判断正反两种顺序是不是都可以,如果都可以那就Unsure,否则如果正序符合,那就是Right,如果逆序符合,那就是Left,如果都不符合,那就是Wrong。
代码
#include<bits/stdc++.h>
#include<stdio.h>
#include<vector>
#include<string>
#include<algorithm>
#include<map>
#include<queue>
using namespace std;
const int MAXN = 1e5+7;
int n,x,y,m,a[MAXN],b[MAXN],flag1=1,flag2=1;
int main()
{
scanf("%d%d%d",&n,&x,&y);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
scanf("%d",&m);
for(int i=1;i<=m;i++) scanf("%d",&b[i]);
for(int i=x-1;i>=x-m;i--)
{
if(a[i] != b[-i+x]) flag1 = 0;
if(i == 0) break;
}
for(int i=x+1;i<=x+m;i++)
if(a[i] != b[i-x]) flag2 = 0;
if(flag1 == 1 && flag2 == 1) printf("Unsure\n");
else
{
if(flag1 == 1)
{
if(y < x) printf("Right\n");
else printf("Wrong\n");
}
if(flag2 == 1)
{
if(y > x) printf("Right\n");
else printf("Wrong\n");
}
}
return 0;
}