Решение задачи Сбалансированный массив с Codeforces

Без пояснения   Просмотров: 65


Вам задано положительное целое число n, гарантируется, что n четное (то есть делится на 2).

Вы хотите построить такой массив a длины n, что:

Первые n2 элементов a четные (делятся на 2);
вторые n2 элементов a нечетные (не делятся на 2);
все элементы в a различны и положительны;
сумма элементов первой половины равна сумме элементов второй половины (∑i=1n2ai=∑i=n2+1nai).
Если есть несколько ответов, вы можете вывести любой. Не гарантируется, что ответ существует.

Вам нужно ответить на t независимых наборов тестовых данных.

Код

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int t, n;
    cin >> t;
    for(int i = 0; i < t; ++i){
        cin >> n;
        if((n / 2) % 2)
            cout << "NO" << endl;
        else{
            vector<int> a;
            vector<int> b;
            for(int j = 2; j <= n; j+=2)
                a.push_back(j);

            for(int j = 0; j < a.size()/2; ++j)
                b.push_back(a[j] - 1);
            for(int j = a.size()/2; j < a.size(); ++j)
                b.push_back(a[j] + 1);
            cout << "YES" << endl;
            for(auto j: a)
                cout << j << ' ';
            for(auto j: b)
                cout << j << ' ';
            cout << endl;
        }
    }
    return 0;
}

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться