cf补题地址
A. 公交线路
思路:
记录上车站点两个方向按顺序听到的数,对给的m个站点数一一对比,若两个方向m个站点完全一样且与听到的m个站点数一样则无法判断,若两个方向m个站点不一样且正确的方向与听到的站点数一样则方向正确,否则,方向错误。
代码:
#include<bits/stdc++.h>
#define ll long long
const int maxn=2e5+10;
using namespace std;
int a[maxn],res[maxn],b[maxn];
int main()
{
int n,x,y,m,temp;
vector<int>left;
vector<int>right;
cin>>n>>x>>y;
for(int i=1;i<=n;i++)cin>>a[i];
cin>>m;
for(int i=0;i<m;i++)cin>>b[i];
int t=max(x,y)-min(x,y);
if(x<y)temp=2;
else temp=1;
for(int i=x+1;i<=x+t;i++)right.push_back(a[i]);
for(int i=x-1;i>=x-t;i--)left.push_back(a[i]);
int tt=1;
for(int i=0;i<m;i++)
{
if(left[i]!=right[i])tt=-1;
}
int ttt=1;
for(int i=0;i<m;i++)
{
if(temp==2&&b[i]!=right[i])
{
ttt=-1;
break;
}
else if(temp==1&&b[i]!=left[i])
{
ttt=-1;
break;
}
}
if(ttt==1&&tt==-1)cout<<"Right"<<endl;
else if(ttt==1&&tt==1)cout<<"Unsure"<<endl;
else cout<<"Wrong"<<endl;