HackerEarth The Old Monk problem solution YASH PAL, 31 July 2024 In this HackerEarth The Old Monk problem solution Big Chandan is a dire lover of Biryani, especially Old Monk’s Biryani. Today, he went over to have some of it. To his surprise, the waiter turns out be to be a coding geek and refuses to serves him unless Chandu solves his two- arrays problem, stated as: Given two non-increasing array of integers A,B i.e A[i] >= A[i+1] and B[i] >= B[i+1] and for all i, 0 ≤ i < n-1. The monkiness of two numbers is given by: M (A[i],B[j]) = j – i , if j >=i and B[j] >= A[i], or 0 otherwise. Find the monkiness of the two arrays, that is given by: M (A,B)= max (M(A[i],B[j])) for 0≤ i, j< n-1. HackerEarth The Old Monk problem solution. tc = int(raw_input())while tc>0: tc = tc - 1 curMax = 0 n = int(raw_input()) x = map(int, raw_input().split()) y = map(int, raw_input().split()) for i in xrange(n): low, high, pos = 0, n - 1, -1 while low<=high: mid = (low + high) / 2 if y[mid] >= x[i]: pos = mid low = mid + 1 else: high = mid - 1 curMax = max (curMax, pos - i) print curMax Second solution #include<bits/stdc++.h>using namespace std;int main(){ int t; scanf("%d",&t); assert(1 <= t && t <= 50); while(t--) { int n,i; scanf("%d",&n); assert(1 <= n && n <= 100000); vector < long long > a(n),b(n); for(i=0;i<n;i++) { scanf("%lld",&a[i]); if(i) assert(a[i] <= a[i-1]); assert(1 <= a[i] && a[i] <= (long long)1e12); } for(i=0;i<n;i++) { scanf("%lld",&b[i]); if(i) assert(b[i] <= b[i-1]); assert(1 <= b[i] && b[i] <= (long long)1e12); } int ans = 0; for(i=0;i<n;i++) { int l = 0 , h = n-1 , m; int p = -1; while(l <= h) { m = (l+h)/2; if(b[m] >= a[i]) { p = m; l = m + 1; } else { h = m - 1; } } ans = max(ans,p - i); } printf("%dn",ans); } return 0;} coding problems