HDU 3833 YY's new problem(换种思路的模拟,防超时)

题目链接

 

 

用p[a]保存的是输入的a在第p[a]个,

 然后根据差值查找。
#include<stdio.h>
#include<string.h>

int main()
{ 
    int mm,m,t,n,i,j,flag,a,p[10010];
    scanf("%d",&t);
    while(t--)
    {
        flag=0;
        scanf("%d",&n);
        for(i=0;i<n;i++)
        {
            scanf("%d",&a);
            p[a]=i;
        }
        m=n/2;
        for(j=1;j<m;j++)
        {
            mm=n-j-j;
            for(i=1;i<=mm;i++)
            {
                if(p[i]<p[i+j]&&p[i+j]<p[i+j+j])
                {
                    flag=1;break;
                }
                if(p[i]>p[i+j]&&p[i+j]>p[i+j+j])
                {
                    flag=1;break;
                }
            }
            if(flag==1)break;
        }
    
        if(flag==1)printf("Y\n");
        else printf("N\n");
    }
    return 0;
}
View Code

 

posted @ 2014-04-16 23:03  laiba2004  Views(100)  Comments(0Edit  收藏  举报