返回题解分享
讨论 / 题解分享/ 帖子详情

数的范围 - 题解

#include <bits/stdc++.h>
using namespace std;
#define int long long
int a[100005],n,q,i,x,j,h;
int check(int m,int l,int r)
{
if(l>r) return -1;
int mid=(l+r)/2;
if(m==a[mid]) return mid;
else if(m<a[mid])
return check(m,l,mid-1);
else
return check(m,mid+1,r);
}
signed main()
{
cin>>n>>q;
for(i=0;i<n;i++)
cin>>a[i];
for(i=0;i<q;i++)
{
cin>>x;
int t=check(x,0,n-1);
if(t>=0)
{
for(j=t+1;j<n;j++)
{
if(a[j]!=a[t])
break;
}
for(h=t-1;h>=0;h--)
{
if(a[h]!=a[t])
break;
}
cout<<h+1<<' '<<j-1<<endl;
}
else
cout<<-1<<' '<<-1<<endl;
}
return 0;
}
0 回复 0 转发 0 喜欢 4 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!