题目:点击打开链接
栈?线段树?
个人做法是定义两个比较大的数组,一个存初始数据,一个存查找时的无重复数据,然后两重循环判断,或者正常退出,数据有点大,还好过了。。。
下面为AC代码:
#include <stdio.h>
#define N 500000+10
int main()
{
int n,a[N],b[N],t,u,v,i,j,k;
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
scanf("%d",&t);
while(t--)
{
k=0;
scanf("%d %d",&u,&v);
for(i=v;i>=u;i--)
if(k==0) b[k++]=a[i];
else
{
for(j=0;j<k;j++)
if(a[i]==b[j]) break;
if(j<k) break;
else
b[k++]=a[i];
}
if(i<u)
printf("OK\n");
else
printf("%d\n",a[i]);
}
printf("\n");
}
return 0;
}