问题
https://vjudge.net/problem/UVA-10730
分析
判断数列中是否包含至少三个数字
p
i
,
p
j
,
p
k
,
i
<
j
<
k
p_i,p_j,p_k,i<j<k
pi,pj,pk,i<j<k,他们能组成等差数列.
枚举前两项,判断第三项是否在后面.
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <map>
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
typedef long long LL;
const int maxn=10000+5;
int n,a[maxn],b[maxn];
int main(void){
while(scanf("%d",&n)==1 && n) {
getchar();
for (int i = 0; i < n; ++i){
scanf("%d", &a[i]);
b[a[i]]=i;
}
int flag=0;
for(int i=0;i<n;++i){
for(int j=i+1;j<n;++j){
int c=(a[j]<<1)-a[i];
if(c<0 || c>=n) continue;
if(b[c]>j){
flag=1;
break;
}
}
if(flag) break;
}
printf("%s\n",flag?"no":"yes");
}
return 0;
}