среда, 26 ноября 2025 г.

с++

 8974

Задано масив цілих чисел. Виведіть тільки такі його елементи, що повторюються декілька разів. Тобто числа, що зустрічаються один раз, не виводяться взагалі, а з декількох однакових елементів в масиві вибираємо один з найбільшим індексом. Якщо таких елементів не існує, виведіть повідомлення NO.

Вхідні дані

В першому рядку задано число n. В наступному рядку записано n цілих чисел. Всі числа за модулем не перевищують 100.

Вихідні дані

Виведіть в одному рядку елементи масиву, що повторюються.

Приклади

Вхідні дані #1
7
0 1 -2 1 0 0 3
Відповідь #1
1 0
Маємо масив:

0 1 -2 1 0 0 3


Частоти і останні індекси:

Число	Частота	Останній індекс
0	3	5
1	2	3
-2	1	–
3	1	–

Залишаємо лише ті, що зустрічаються більше одного разу.

Маємо:

1 → останній індекс 3

0 → останній індекс 5

У прикладі вивід:

1 0


Це саме у порядку зростання останнього індексу.

✔ Алгоритм

Порахуємо частоту кожного числа (−100..100 → масив freq[201]).

Запам’ятаємо останній індекс появи — масив last[201].

Зберемо всі числа з freq > 1.

Відсортуємо їх за lastIndex зростанням.

Виведемо.

Якщо таких нема — вивести NO.

✔ C++ код (правильний)
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    int n;
    cin >> n;

    vector<int> a(n);
    for (int i = 0; i < n; i++)
        cin >> a[i];

    // Масиви частот і останніх індексів (зміщення +100)
    vector<int> freq(201, 0);
    vector<int> last(201, -1);

    for (int i = 0; i < n; i++) {
        int x = a[i] + 100;
        freq[x]++;
        last[x] = i;
    }

    // Збираємо елементи, що повторюються більше 1 разу
    vector<int> vals;
    for (int i = 0; i < 201; i++) {
        if (freq[i] > 1)
            vals.push_back(i - 100);   // повертаємо справжнє значення
    }

    if (vals.empty()) {
        cout << "NO";
        return 0;
    }

    // Сортуємо за зростанням останнього індексу
    sort(vals.begin(), vals.end(),
         [&](int a, int b) {
             return last[a + 100] < last[b + 100];
         });

    for (int x : vals)
        cout << x << " ";

    return 0;
}
8973

З заданого масиву цілих чисел потрібно видалити всі дублювання елементів. Тобто з декількох однакових елементів в масиві залишається тільки елемент з найбільшим індексом.

Вхідні дані

В першому рядку записано число N. В наступному рядку записано N цілих чисел.Всі числа за модулем не перевищують 100.

Вихідні дані

Вивести елементи масиву без повторень в одному рядку через проміжок, не змінюючи початковий порядок.

Приклади

Вхідні дані #1
7
0 1 -2 1 0 0 3
Відповідь #1
-2 1 0 3
#include <iostream>
#include <vector>
using namespace std;

int main() {
    int N;
    cin >> N;
    vector<int> a(N);
    for (int i = 0; i < N; i++)
        cin >> a[i];

    // Масив для останніх індексів чисел -100..100
    vector<int> lastIndex(201, -1);

    for (int i = 0; i < N; i++) {
        lastIndex[a[i] + 100] = i;
    }

    // Виводимо тільки числа на їх останньому індексі
    for (int i = 0; i < N; i++) {
        if (lastIndex[a[i] + 100] == i)
            cout << a[i] << " ";
    }

    return 0;
}
8971

З заданого масиву цілих чисел потрібно видалити всі дублювання елементів. Тобто з декількох однакових елементів в масиві залишається тільки елемент з найменшим індексом.

Вхідні дані

В першому рядку записано число N. В наступному рядку записано N цілих чисел.Всі числа за модулем не перевищують 100.

Вихідні дані

Вивести елементи масиву без повторень в одному рядку через проміжок, не змінюючи початковий порядок.

Приклади

Вхідні дані #1
7
0 1 -2 1 0 0 3
Відповідь #1
0 1 -2 3
#include <iostream>
#include <vector>
using namespace std;

int main() {
    int N;
    cin >> N;
    vector<int> a(N);
    for (int i = 0; i < N; i++)
        cin >> a[i];

    // Масив для відстеження чисел від -100 до 100
    vector<bool> seen(201, false);

    for (int i = 0; i < N; i++) {
        int idx = a[i] + 100;
        if (!seen[idx]) {
            cout << a[i] << " ";
            seen[idx] = true;
        }
    }

    return 0;
}



Комментариев нет:

Отправить комментарий