Предмет: Информатика,
автор: dzasanbai
Вам дается массив из N целых чисел. Вам необходимо удалить повторяющиеся элементы так, чтобы от каждого элемента осталось только его самое правое вхождение. При этом относительный порядок оставшихся элементов должен остаться таким, как в изначальном массиве. Входные данные В первой строке вводится целое число N — количество элементов в массиве (1≤N≤50). Во второй строке вводится N целых чисел A1, A2, A3, ..., AN — элементы массива (1≤Ai≤1000). Выходные данные В первой строке выведите одно число — количество оставшихся элементов. Во второй строке выведите сами эти элементы, сохраняя относительный порядок как в оригинальном массиве.
Ответы
Автор ответа:
0
#include <iostream>
#include <vector>
using namespace std;
int main(){
int n;
cin >> n;
vector<int> a(n), res;
vector<bool> used(1001, false);
for(int i = 0; i < n; i++) cin >> a[i];
for(int i = n - 1; i >= 0; i--){
if(!used[a[i]]){
res.push_back(a[i]);
used[a[i]] = true;
}
}
reverse(res.begin(), res.end());
cout << res.size() << "\n";
for(int i = 0; i < res.size(); i++)
cout << res[i] << " ";
}
Похожие вопросы
Предмет: Русский язык,
автор: milka00007
Предмет: Русский язык,
автор: Акося111
Предмет: Английский язык,
автор: elmirada78
Предмет: Математика,
автор: lilkz