题意:
找出l->r中不等于x的任意位置输出
#include <iostream>
#include <stdio.h>
#include <map>
#include <cstring>
#include <queue>
using namespace std;
const int maxn=200005;
int a[maxn];
int b[maxn];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
b[1]=-1;
for(int i=2;i<=n;i++)
{
if(a[i]!=a[i-1])
b[i]=i-1;
else
b[i]=b[i-1];
}
while(m--)
{
int l,r,x;
scanf("%d%d%d",&l,&r,&x);
int st=r;
int yes=0;
while(st>=l)
{
if(a[st]!=x)
{
yes=1;
printf("%d\n",st);
break;
}
else
{
st=b[st];
}
}
if(!yes)
printf("-1\n");
}
}