注意到输入为一个全排列,所以可以标记每个数的位置,而非每个位置上的数,然后枚举所有可能构成等差数列的数,通过位置关系判断即可。
#include <iostream>
#include <cstdio>
using namespace std;
#define M 10010
char c;
int n,a[M],t;
void solve()
{
for(int i=0;i<n;i++)
for(int j=1;2*j+i<n;j++)
{
if(a[i]<a[i+j]&&a[i+j]<a[i+2*j]||a[i]>a[i+j]&&a[i+j]>a[i+2*j])
{
cout<<"no"<<endl;return;
}
}
cout<<"yes"<<endl;
}
int main()
{
freopen("in.txt","r",stdin);
while(cin>>n&&n)
{
cin>>c;
for(int i=0;i<n;i++)
{
cin>>t;
a[t]=i;
}
solve();
}
}