Предмет: Информатика, автор: yabhbkirill

25 баллов даю (там ещё бонусом немного)

Напишите прогу на C++

Задана последовательность целых чисел a1,a2,…,an, в которой каждое число от 1 до 3 включительно. Требуется заменить в ней наименьшее количество чисел так, чтобы все числа в последовательности оказались равны между собой.

Входные данные:
В первой строке задано целое число n
(1≤n≤106). Вторая строка содержит последовательность целых чисел a1,a2,…,an (1≤ai≤3).

Выходные данные:
Выведите наименьшее количество изменений, которое надо сделать, чтобы уравнять все числа в последовательности.


yabhbkirill: кто меня отметил и за что
yabhbkirill: ответьте
MaxLevs: ¯\_(ツ)_/¯
MaxLevs: С заданием всё в порядке, вроде
MaxLevs: Тут просто посчитать виды чисел
MaxLevs: и сложить соответсвующие

Ответы

Автор ответа: MaxLevs
1

Код

  • #include <iostream>
  • #include <vector>
  • int main() {
  •    int n;
  •    std::vector<int> sequence;
  •    std::cin >> n;
  •    for(auto i = 0; i < n; ++i) {
  •        int number;
  •        std::cin >> number;
  •        sequence.push_back(number);
  •    }
  •    int as = 0, bs = 0, cs = 0;
  •    for (auto &el : sequence) {
  •        switch (el) {
  •            case 1:
  •                ++as;
  •                break;
  •            case 2:
  •                ++bs;
  •                break;
  •            case 3:
  •                ++cs;
  •                break;
  •            default:
  •                throw std::runtime_error("All elements shall be into [1;3] range.");
  •        }
  •    }
  •    int an_answer = std::min({bs + cs, as + cs, bs + cs});
  •    std::cout << an_answer << std::endl;
  •    return 0;
  • }
Приложения:
Похожие вопросы