题解
【入门】起止位置
1 条题解
-
0
#include<bits/stdc++.h> using namespace std; int a[100100],n,q,k; int main() { // freopen("test9.in","r",stdin); // freopen("test9.out","w",stdout); cin>>n>>q; for(int i = 1;i <= n;i++){ cin>>a[i]; } int l,r,mid; for(int i = 1;i <= q;i++){ cin>>k; //找左右边界 l = 1;r = n; //左边界 while(l <= r){ mid = (l+r)>>1; if(k <= a[mid]) r = mid - 1; else l = mid + 1; } if(a[l] == k) cout<<l<<" "; else cout<<-1<<" "; l = 1;r = n; //右边界 while(l <= r){ mid = (l+r)>>1; if(k >= a[mid]) l = mid + 1; else r = mid - 1; } if(a[r] == k) cout<<r<<endl; else cout<<-1<<endl; } return 0; }
- 1