View difference between Paste ID: FdZ59fDC and r4Q1RgPf
SHOW: | | - or go back to the newest paste.
1
#include <algorithm>
2
#include <iostream>
3
#include <vector>
4
5
using namespace std;
6
7
vector<int> ReadNumbers() {
8
    int count;
9
    cin >> count;
10
    
11
    vector<int> numbers;
12
    for (int i = 0; i < count; ++i) {
13
        int number;
14
        cin >> number;
15
        numbers.push_back(number);
16
    }
17
18
    return numbers;
19
}
20
21
void PrintNumbers(const vector<int>& numbers) {
22
    for (auto number : numbers) {
23
        cout << number << " "s;
24
    }
25
}
26
27
int main() {
28
    vector<int> numbers = ReadNumbers();
29
    
30
    sort(numbers.begin(), numbers.end(),
31
        [] (int n1, int n2) {
32
            const bool n1_is_even = n1 % 2 == 0;
33
            const bool n2_is_even = n2 % 2 == 0;
34
            if (n1_is_even && n2_is_even) {  // n1 и n2 — чётные
35
                // Чётные числа сортируются по возрастанию
36
                return n1 < n2;
37
            }
38
            if (n1_is_even) {  // n1 — чётное, n2 — нечётное
39
                return true;   // чётные числа должны предшествовать нечётным
40
            }
41
            if (n2_is_even) {  // n1 — нечётное, n2 — чётное
42
                return false;  // нечётные числа следуют за чётными
43
            }
44
            // n1 и n2 — нечётные
45
            return n1 > n2; // Нечётные числа сортируются по убыванию
46
        });
47
    
48
    PrintNumbers(numbers);
49
}