Description
Given a permutation P of 1 to N, YY wants to know whether there exists such three elements P[i
1], P[i
2], P[i
3] that
P[i 1]-P[i 2]=P[i 2]-P[i 3], 1<=i 1<i 2<i 3<=N.
P[i 1]-P[i 2]=P[i 2]-P[i 3], 1<=i 1<i 2<i 3<=N.
Input
The first line is T(T<=60), representing the total test cases.
Each test case comes two lines, the former one is N, 3<=N<=10000, the latter is a permutation of 1 to N.
Each test case comes two lines, the former one is N, 3<=N<=10000, the latter is a permutation of 1 to N.
Output
For each test case, just output 'Y' if such i
1, i
2, i
3 can be found, else 'N'.
Sample Input
2 3 1 3 2 4 3 2 4 1
Sample Output
N Y
1 #include<cstdio> 2 #include<string.h> 3 using namespace std; 4 int hush[10005]; 5 int str[10005]; 6 int main() 7 { 8 int t,n; 9 while(scanf("%d",&t)!=EOF) 10 { 11 while(t--) 12 { 13 scanf("%d",&n); 14 for(int i=1; i<=n; i++) 15 { 16 scanf("%d",&str[i]);//把1——N保存到数组里 17 hush[str[i]]=i;//记录每个数的位置 18 } 19 int flag=0; 20 for(int i=1; i<=n; i++) 21 { 22 for(int j=i+1; j<=n; j++) 23 { 24 int temp=str[i]+str[j];//相加 25 if(temp%2)//优化,必须是偶数才行,尽量别写成temp%2==1,直接写temp%2 26 continue; 27 if(hush[temp/2]>i&&hush[temp/2]<j) 28 { 29 flag=1; 30 break; 31 } 32 } 33 if(flag==1) break; 34 } 35 printf("%c",flag==1?'Y':'N'); 36 printf("\n"); 37 } 38 } 39 return 0; 40 }