|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include<bits/stdc++.h>
- using namespace std;
- #define int long long
- int a[200005],s[200005]; //预处理相邻位置不相等有多少个
- void solve()
- {
- int n,q;
- cin>>n;
- for(int i=1;i<=n;i++)cin>>a[i];
- for(int i=2;i<=n;i++)s[i]=s[i-1]+(a[i]!=a[i-1]);
- cin>>q;
- while(q--)
- {
- int l,r;
- cin>>l>>r;
- int x=upper_bound(s+l+1,s+r+1,s[l])-s;
- if(x>r)cout<<"-1 -1\n";
- else cout<<x-1<<" "<<x<<endl;
- }
- }
- signed main()
- {
- int t;
- cin>>t;
- while(t--)
- {
- solve();
- }
- }
复制代码
int x=upper_bound(s+l+1,s+r+1,s[l])-s;为什么是s+l+1,s+r+1而不是s+l,s+r; |
|