Задача
Даны целые числа [latex]a_1,\cdots, a_{n}[/latex]. Получить новую последовательность, выбросив из исходной все члены со значением [latex]max(a_1,\cdots,a_{n})[/latex].
Тесты
№ | Входные данные | Выходные данные |
1 | 0 0 0 0 0 0 0 0 | |
2 | 998 103678 3333 800000 542 2 48 132 9 745 | 998 103678 3333 542 2 48 132 9 745 |
3 | 1 2 42 -138 0 99 1 242 70 21 | 1 2 42 -138 0 99 1 70 21 |
4 | -144 -789342454657 -155 -923 -7 | -144 -789342454657 -155 -923 |
5 | 8 8 8 8 11 11 11 11 8 8 8 8 | 8 8 8 8 8 8 8 8 |
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#include <iostream> #include <vector> using namespace std; int main() { long long a; long long n = 0; // номер максимального по значению элемента vector <long long> x; while (cin >> a) x.push_back(a); int counter = 0; // счётчик равных по значению элементов последовательности for (int i = 0; i < x.size(); i++) { // находим элемент с максимальным значением if (x[i] > x[n]) n = i; else if (x[i] == x[n]) counter++; } if (counter != x.size()) { // если вся последовательность не состоит из равных элементов long long temp = x[n]; for (int i = 0; i < x.size(); i++) { // удаляем все элементы с максимальным значением if (x[i] == temp) { x.erase(x.begin() + i); i--; } } } else x.clear(); // если последовательность из равных чисел for (int i = 0; i < x.size(); i++) { cout << x[i] << " "; } return 0; } |
Решение
Заданную последовательность чисел добавляем в вектор. Затем находим максимальный по значению член этой последовательностии и удаляяем равные ему элементы. Если же последовательность состоит из равных по значению чисел, то удаляем все члены последовательности.