fork download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. // Функция сортировки вставками
  6. void insertionSort(vector<char>& arr) {
  7. int n = arr.size();
  8. for (int i = 1; i < n; i++) {
  9. char key = arr[i];
  10. int j = i - 1;
  11.  
  12. // Перемещаем элементы arr[0..i-1], которые больше key,
  13. // на одну позицию вперед от их текущей позиции
  14. while (j >= 0 && arr[j] > key) {
  15. arr[j + 1] = arr[j];
  16. j = j - 1;
  17. }
  18. arr[j + 1] = key;
  19. }
  20. }
  21.  
  22. // Функция для вывода уникальных символов (встречающихся ровно один раз)
  23. void printUniqueCharacters(const vector<char>& arr) {
  24. int n = arr.size();
  25. if (n == 0) return;
  26.  
  27. // Проверяем первый элемент
  28. if (n == 1 || arr[0] != arr[1]) {
  29. cout << arr[0] << " ";
  30. }
  31.  
  32. // Проверяем элементы в середине массива
  33. for (int i = 1; i < n - 1; i++) {
  34. if (arr[i] != arr[i - 1] && arr[i] != arr[i + 1]) {
  35. cout << arr[i] << " ";
  36. }
  37. }
  38.  
  39. // Проверяем последний элемент
  40. if (arr[n - 1] != arr[n - 2]) {
  41. cout << arr[n - 1] << " ";
  42. }
  43.  
  44. cout << endl;
  45. }
  46.  
  47. int main() {
  48. int k;
  49. cout << "Введите количество символов: ";
  50. cin >> k;
  51.  
  52. vector<char> symbols(k);
  53. cout << "Введите " << k << " символов латинского алфавита: ";
  54. for (int i = 0; i < k; i++) {
  55. cin >> symbols[i];
  56. }
  57.  
  58. // Сортируем массив
  59. insertionSort(symbols);
  60.  
  61. cout << "Уникальные символы в алфавитном порядке: ";
  62. printUniqueCharacters(symbols);
  63.  
  64. return 0;
  65. }
Success #stdin #stdout 0.01s 5320KB
stdin
Standard input is empty
stdout
Введите количество символов: Введите 22031 символов латинского алфавита: Уникальные символы в алфавитном порядке: