hdu 3833 YY's new problem

2014-11-24 10:37:44 · 作者: · 浏览: 0

YY's new problem

Time Limit: 12000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 3501 Accepted Submission(s): 984


Problem 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 2 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.


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到n每个元素只会出现一次,引入hash[]来记录该数是否已经出现,出现为1,否则为0 ; 读入一个数t ,从1到t-1依次判断是否有hash[t-i]+hash[t+i]==1 即以t为中项, 对于t-i,t+i是否仅出现过一个,由于是按顺序读入的,即可保证t-i和t+i在原序列中一定是在t的两边

#include"stdio.h"
#include"string.h"
#define N 10005
int main()
{
	int T,t,n,i,m,flag,hash[N];
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d",&n);
		memset(hash,0,sizeof(hash));
		m=n;
		flag=0;
		while(m--)
		{
			scanf("%d",&t);
			hash[t]=1;
			for(i=1;!flag&&i