Print the last occurrence of elements in array in relative order in C Program.

Given an array a[] with elements and the task is to print the last occurrences of the given elements in the list. Here we not only have to remove the duplicate elements but also we have to maintain the order of the occurrences of the elements in an array as per the last time they have occurred.

Like we have an array of 6 elements also containing some duplicate values i.e., {1,3, 2, 3, 1, 2} so the result should be in form of 3 1 2.


Input: a[]={4,2,2,4,1,5,1}
Output : 2 4 5 1


Step 1-> Declare function void printelements(int a[], int n)
   Use STL unordered_map<int, int> ele
   Loop For int i=0 and i<n and i++
      Set ele[a[i]]=i
   Loop For int i=0 and i<n and i++
      IF ele[a[i]]=i
         Print a[i]
Step 2 -> main()
   Declare array a[]={4,2,2,4,1,5,1}
   Declare int n=sizeof(a)/sizeof(a[0])
   Call Function printelements(a,n)


#include <bits/stdc++.h>
using namespace std;
void printelements(int a[], int n) {
   unordered_map<int, int> ele;
   for (int i = 0; i < n; i++)
      ele[a[i]] = i;
   for (int i = 0; i < n; i++) {
      if (ele[a[i]] == i)
         cout << a[i] << " ";
int main() {
   int a[] = { 4,2,2,4,1,5,1 };
   int n = sizeof(a) / sizeof(a[0]);
   printelements(a, n);
   return 0;


if we run above program then it will generate following output

2 4 5 1

Updated on: 22-Aug-2019


Kickstart Your Career

Get certified by completing the course

Get Started