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
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.
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.
For each test case, just output 'Y' if such i 1, i 2, i 3 can be found, else 'N'.
2 3 1 3 2 4 3 2 4 1
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