https://pintia.cn/problem-sets/994805342720868352/problems/994805348915855360
- 每一个点只会出现一次
- 任意俩点的横距离和总距离的差不会相等
#include<bits/stdc++.h>
using namespace std;
const int N=10010;
int a[N],n,t;
bool check()
{
int cnt[N]={
0};
for(int i=1;i<=n;i++)
{
if(cnt[a[i]]) return false;
for(int j=i+1;j<=n;j++)
if(abs(i-j)==abs(a[i]-a[j])) return false;
cnt[a[i]]++;
}
return true;
}
int main(void)
{
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
if(check()) puts("YES");
else puts("NO");
}
return 0;
}