diff --git a/Arrays-algos/mountainSubarrayProblem.cpp b/Arrays-algos/mountainSubarrayProblem.cpp new file mode 100644 index 0000000..131f86b --- /dev/null +++ b/Arrays-algos/mountainSubarrayProblem.cpp @@ -0,0 +1,71 @@ +// https://practice.geeksforgeeks.org/problems/mountain-subarray-problem/1 + +#include +using namespace std; + +class Solution{ + public: + vector processQueries(int a[], int n, vector> &queries, + int q) { + + vectorans; + int left[n], right[n]; + left[0]=0; + right[n-1]=n-1; + int k=0; + + // left[i] stores the last index on left side which is increasing + // i.e. greater than its previous element + for(int i=1; i=0; i--) + { + if(a[i+1]> tc; + while (tc--) { + int n, i, q; + cin >> n; + int a[n]; + for (i = 0; i < n; i++) { + cin >> a[i]; + } + cin >> q; + vector> queries(q); + for (i = 0; i < q; i++) { + cin >> queries[i].first >> queries[i].second; + } + Solution obj; + auto v = obj.processQueries(a, n, queries, q); + for (bool u : v) { + cout << (u ? "Yes\n" : "No\n"); + } + } + return 0; +} \ No newline at end of file diff --git a/search-with-noob/peak_element.cpp b/search-with-noob/peak_element.cpp new file mode 100644 index 0000000..28a19c0 --- /dev/null +++ b/search-with-noob/peak_element.cpp @@ -0,0 +1,79 @@ +// https://practice.geeksforgeeks.org/problems/peak-element/1/ +// An element is called a peak element if its value is not smaller than the value of its adjacent elements(if they exists). +// Given an array arr[] of size N, find the index of any one of its peak elements. + +//Binary Search is used + +#include +#include + +int peakElement(int a[], int n) +{ + int l=0, u=n-1, mid; + while(l<=u) + { + mid= l+(u-l)/2; + if(mid==n-1 && a[mid]>=a[mid-1]) + return mid; + else if(mid==0 && a[mid]>=a[mid+1]) + return mid; + else if(a[mid]>=a[mid-1] && a[mid]>=a[mid+1]) + return mid; + else + l=mid+1; + } + l=0, u=n-1, mid; + while(l<=u) + { + mid= l+(u-l)/2; + if(mid==n-1 && a[mid]>=a[mid-1]) + return mid; + else if(mid==0 && a[mid]>=a[mid+1]) + return mid; + else if(a[mid]>=a[mid-1] && a[mid]>=a[mid+1]) + return mid; + else + return u=mid-1; + } + return -1; +} + +int main() { + int t; + scanf("%d", &t); + while(t--) + { + int n; + scanf("%d", &n); + int a[n], tmp[n]; + for(int i=0;i=n) + printf("0\n"); + else + { + if(n==1 && A==0) + f=1; + else + if(A==0 && a[0]>=a[1]) + f=1; + else if(A==n-1 && a[n-1]>=a[n-2]) + f=1; + else if(a[A]>=a[A+1] && a[A]>= a[A-1]) + f=1; + else + f=0; + printf("%d\n", f); + } + + } + + return 0; +} \ No newline at end of file