Answer:
Explanation:
#include <iostream>
#include <algorithm>
using namespace std;
void reduce(int a[], int& n) {
// find the three largest unique integers
int largest[3] = {a[0], a[0], a[0]}; // initialize with first element
int count = 1; // count the number of unique integers
for (int i = 1; i < n; i++) {
if (a[i] > largest[0]) {
largest[2] = largest[1];
largest[1] = largest[0];
largest[0] = a[i];
if (count < 3) count++;
}
else if (a[i] > largest[1] && a[i] < largest[0]) {
largest[2] = largest[1];
largest[1] = a[i];
if (count < 3) count++;
}
else if (a[i] > largest[2] && a[i] < largest[1]) {
largest[2] = a[i];
if (count < 3) count++;
}
}
// remove all values equal to the three largest unique integers
int j = 0; // index for non-removed elements
for (int i = 0; i < n; i++) {
if (a[i] != largest[0] && a[i] != largest[1] && a[i] != largest[2]) {
a[j] = a[i];
j++;
}
}
n = j; // update array size
}
int main() {
int a[] = {9,1,1,6,7,1,2,3,3,5,6,6,6,6,7,9};
int n = sizeof(a) / sizeof(a[0]);
reduce(a, n);
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
cout << endl << "n = " << n << endl;
return 0;
}