Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- int key ;
- int first_pos(int * a, int n, const int *key ){
- int res =-1 ;
- int l=0, r=n-1;
- while ( l<= r ){
- int mid = (l+r)/2;
- if ( a[mid]== *key ){
- res= mid;
- r=mid-1;
- }
- else if ( *key > a[mid] ){
- l=mid+1;
- continue;
- }
- else{
- r=mid-1;
- continue ;
- }
- }
- return res;
- }
- int last_pos(int *a , int n, const int *key ){
- int res=-1;
- int l =0 , r= n-1;
- while( l<=r ){
- int mid= (l+r)/2;
- if ( *key == a[mid] ){
- res=mid ;
- l=mid+1;
- }
- else if ( *key > a[mid] ){
- l=mid+1;
- }
- else {
- r=mid-1;
- }
- }
- return res;
- }
- int main(){
- int n;
- cin >> n;
- int *a = new int [n];
- for (int i=0;i<n;i++) cin >> a[i];
- sort(a,a+n);
- cin >> key ;
- cout<<first_pos(a,n,&key)<<endl<<last_pos(a,n,&key)<<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment