- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Find the position of the last removed element from the array using C++
In this problem, we are given an array arr[] of size N and an integer value M. Our task is to find the position of the last removed element from the array.
The removal of values from the array is based on the operations −
- For an element in the array arr[i]. If arr[i] > M, pop the value and push arr[i] - M to the end of the array. Otherwise remove it from the array.
Perform the operations till the array consists of elements.
Let’s take an example to understand the problem,
Input
arr[] = {5, 4, 8}, M = 3
Output
3
Explanation
Removing values using operations, {5, 4, 8} -> {4, 8, 2} -> {8, 1, 2} -> {1, 2, 5} -> {2, 5} -> {5} -> {2} -> empty array. The last value removed is 8, position is 3.
Solution Approach
A simple solution to the problem is by finding the last value to be removed using the fact that each value which will be removed last has the largest value of ceil(arr[i] / M).
To find the position of elements that exits the array last, we will traverse the array and store the position with maximum value of ceil(arr[i] / M).
Example
Program to illustrate the working of our solution
#include <iostream> using namespace std; int findLastRemPos(int arr[], int n, int m){ for (int i = 0; i < n; i++) { arr[i] = (arr[i] / m + (arr[i] % m != 0)); } int lastRemPos = -1, largestVal = -1; for (int i = n - 1; i >= 0; i--) { if (largestVal < arr[i]) { largestVal = arr[i]; lastRemPos = i; } } return lastRemPos + 1; } int main(){ int arr[] = {5, 4, 8, 1}; int n = sizeof(arr) / sizeof(arr[0]); int m = 3; cout<<"The position of last removed element in the array is "<<findLastRemPos(arr, n, m); return 0; }
Output
The position of last removed element in the array is 3
Advertisements