Maximum Difference in Positions

Posted: 13 Mar, 2021
Difficulty: Moderate

PROBLEM STATEMENT

Try Problem

There are ‘N’ students sitting in a row each having some marks that they have obtained in the previous examinations. You have to find the maximum difference in the position of two students such that the second student has marks greater or equal to the first student. Formerly, You have to find the maximum value of ‘j’ - ‘i’ such that ‘i’ < ‘j’ and arr[ i ] <= arr[ j ].

Note:

Return 0, if there are no such two students present.
Input Format:
The first line contains a single integer ‘T’ representing the number of test cases. 
The first line of each test case will contain a single integer ‘N’ which denotes the number of students in the row.
The second line of each test case contains the ‘N’ space-separated integers in which the “i-th” number represents the marks of the “i-th” student.
Output Format:
For each test case, print the maximum difference between the two students described above. If, there are no such students then print 0.

Output for every test case will be printed in a separate line.
Note:
You don’t need to print anything; It has already been taken care of.
Constraints:
1 <= T <= 50
2 <= N <= 10000
0 <= arr[ i ] <= 10^5

Where ‘T’ is the number of test cases.
Where 'N' is the number of students in the row and “arr[ i ]” denotes the marks of “i-th” student.

Time limit: 1 sec
Approach 1

The basic idea is to iterate through all the pairs of students and find the maximum difference between two students such that the first one has marks less than or equal to the second one.

 

The steps are as follows:

 

  1. Create a variable to store the answer. (say, “ans”)
  2. Iterate through the “arr”. (say, iterator = ‘i’)
    • Iterate again through the “arr” but from ‘i’ + 1. (say, iterator = ‘j’)
      • Check if arr[ i ] is less than or equal to arr[ j ] then store the maximum between the “ans” and ‘j’ - ‘i’ in the “ans”.
  3. Return “ans”.
Try Problem