Pranav

 avatar
unknown
c_cpp
12 days ago
1.1 kB
3
Indexable
{
        int n = A.length;
        int l = 0;
        int r = n-1;
        while(l<=r) {
            if(A[l]<=A[r]) {
                while(l<=r) {
                    int m = (l+r)/2;
                    if(B==A[m]) return m;
                    if(B>A[m]) {
                        l = m+1;
                    }else {
                        r = m-1;
                    }
                }
                return -1;
            }
            int m = (l+r)/2;
            if(B==A[m]) return m;
            if(B>A[r]) {
                if(A[m]>A[r]) {
                    if(B>A[m]) {
                        l = m+1;
                    }else {
                        r = m-1;
                    }
                }else {
                    r = m-1;
                }
            }else {
                if(A[m]<A[r]) {
                    if(B>A[m]) {
                        l = m+1;
                    }else {
                        r = m-1;
                    }
                }else {
                    l = m+1;
                }
            }
        }
        return -1;
    }
Leave a Comment