#include <iostream>
#include <unordered_set>
int removeDuplicates(int arr[], int size) {
std::unordered_set<int> seen;
int index = 0;
for (int i = 0; i < size; i++) {
if (seen.find(arr[i]) == seen.end()) {
seen.insert(arr[i]);
arr[index++] = arr[i]; // overwrite in-place
}
}
return index; // new size of array
}
int main() {
int arr[] = {4, 3, 2, 5, 4, 5, 1, 4, 5, 2, 3, 2};
int size = sizeof(arr) / sizeof(arr[0]);
size = removeDuplicates(arr, size);
for (int i = 0; i < size; i++) std::cout << arr[i] << " ";
}
/*
run:
4 3 2 5 1
*/