Given Q queries of three types where every query consists of a number.
- Add element num on the left
- Add element num on the right
- Print the number of elements to the right an left of the given element num.
The task is to write a program that performs the above queries.
Note: Elements in queries 1 and 2 are distinct and 0 <= num <= 105.
Q = 5
Query of type 1: num = 3
Query of type 2: num = 5
Query of type 1: num = 2
Query of type 1: num = 4
Query of type 3: num = 3
Output: element on the right: 1 element on the left: 2
After query 1, the element positioning is 3
After query 2, the element positioning is 35
After query 3, the element positioning is 235
After query 4, the element positioning is 4235
So there is 1 element to the right and 2 elements on the left of 3 when
query 3 is called.
The following steps can be followed to solve the above problem.
- Initialize a variable left and right as 0, and two hash arrays position and mark. position is used to store the index of num on left and right and mark is used to mark if the num is on left or right.
- For query-1, increase the count of left, and mark position[num] as left and mark[num] as 1.
- For query-2, increase the count of right, and mark position[num] as right and mark[num] as 2
- For query-3, check if the given number is present on right or left using mark.
- If the number is present on right, then the number of elements to the left of num will be (left-position[num]), and the number of elements to the right of num will be (position[num] – 1 + right).
- If the number is present on left, then the number of elements to the right of num will be (right-position[num]), and the number of elements to the left of num will be (position[num] – 1 + *left).
Below is the implementation of the above approach:
Time Complexity: O(1) for every query.
Auxiliary Space: O(MAXN), where MAXN is 105.
- Number of elements greater than K in the range L to R using Fenwick Tree (Offline queries)
- Queries for number of distinct elements from a given index till last index in an array
- Queries to check whether all the elements can be made positive by flipping signs exactly K times
- Queries to return the absolute difference between L-th smallest number and the R-th smallest number
- Minimum number of elements to be removed so that pairwise consecutive elements are same
- Maximum number of contiguous array elements with same number of set bits
- Array range queries over range queries
- Arrange N elements in circular fashion such that all elements are strictly less than sum of adjacent elements
- Number of segments where all elements are greater than X
- Sum of elements of all partitions of number such that no element is less than K
- Number of Larger Elements on right side in a string
- Minimum number of elements to be removed to make XOR maximum
- Number of array elements derivable from D after performing certain operations
- Minimum number of moves to make all elements equal
- Number of ways to remove elements to maximize arithmetic mean
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.