题意:告诉你两个运动员与跑道上每个障碍物的距离和跑道的长度,要求你判断他们是否在同一跑道;
思路:可以通过已知条件得知两个由相邻障碍物之间的距离组成的序列,判断两个序列是否相等即可;
#include <bits/stdc++.h>
using namespace std;
int a[105], b[105];
int main() {
int n, l;
scanf("%d%d", &n, &l);
for(int i = 0; i < n; i++)
scanf("%d", &a[i]);
for(int i = 0; i < n; i++)
scanf("%d", &b[i]);
int aa = 0, bb = 0;
for(int i = 0; i < n - 1; i++) {
a[i] = a[i + 1] - a[i];
b[i] = b[i + 1] - b[i];
aa += a[i];
bb += b[i];
}
a[n - 1] = l - aa;
b[n - 1] = l - bb;
for(int i = 0; i < n; i++) {
a[n + i] = a[i];
}
for(int i = 0; i < n; i++) {
bool flag = false;
for(int j = 0; j < n; j++) {
if(a[i + j] != b[j]) {
flag = true;
break;
}
}
if(!flag) {
printf("YES\n");
return 0;
}
}
printf("NO\n");
return 0;
}