B. Balanced Array
limit czasowy dla jednego testu: 1 second
limit pamięci dla jednego testu: 256 megabytes
wejście: standardowe wejście
wyjście: standardpwe wyjście
limit czasowy dla jednego testu: 1 second
limit pamięci dla jednego testu: 256 megabytes
wejście: standardowe wejście
wyjście: standardpwe wyjście
Otrzymujesz dodatnią liczbę całkowitą $latex \displaystyle \mathbf{\mathit{n}}$, gwarantuje się, że $latex \displaystyle \mathbf{\mathit{n}}$ jest parzyste (tj. Podzielne przez $latex \displaystyle \mathbf{\mathit{2}} $).
Chcesz zbudować tablicę $latex \displaystyle \mathbf{\mathit{a}} $ o długości $latex \displaystyle \mathbf{\mathit{n}} $ takie, że:
- Pierwszy $latex \frac{n}{2} $ elementy $latex \displaystyle \mathbf{\mathit{a}} $ są parzyste (podzielne przez $latex \displaystyle \mathbf{\mathit{2}} $);
- drugi $latex \frac{n}{2} $ elementy a są nieparzyste (niepodzielne przez $latex \displaystyle \mathbf{\mathit{2}} $ );
- wszystkie elementy są odrębne i dodatnie;
- suma pierwszej połowy jest równa sumie drugiej połowy $latex \displaystyle (\sum_{i=1}^{\frac{n}{2}}a_{i}=\sum_{i=\frac{n}{2}+1}^{n}a_{i}).$
Jeśli istnieje wiele odpowiedzi, możesz wydrukować dowolną. Nie ma gwarancji, że odpowiedź istnieje.
Musisz odpowiedzieć $latex \displaystyle \mathbf{\mathit{t}} $ niezależne przypadki testowe.
Wejście
Pierwszy wiersz wejścia zawiera jedną liczbę całkowitą $latex \displaystyle \mathbf{\mathit{t}} (1 \leqslant \mathbf{\mathit{t}} \leqslant 10^{4} ) $ – liczba przypadków testowych. Następnie $latex \displaystyle \mathbf{\mathit{t}} $ przypadków testowych.
Jedyny wiersz przypadku testowego zawiera jedną liczbę całkowitą $latex \displaystyle n(2\leqslant n\leqslant 2\cdot 10^{5}) $ – długość tablicy. Gwarantuje się, że n jest parzyste (tj. Podzielne przez $latex \displaystyle \mathbf{\mathit{2}} $ ).
Gwarantuje się, że suma $latex \displaystyle \mathbf{\mathit{n}} $ we wszystkich przypadkach testowych nie przekracza $latex \displaystyle 2\cdot 10^{5}(\sum n\leqslant 2\cdot 10^{5}) $.
Wyjście
Dla każdego przypadku testowego wydrukuj odpowiedź – „NO” (bez cudzysłowów), jeśli nie ma odpowiedniej odpowiedzi dla danego przypadku testowego lub „YES” w pierwszym wierszu i dowolnej odpowiedniej tablicy $latex \displaystyle a_{1}, a_{2}, … a_{n} (1\leqslant a_{i}\leqslant 10^{9}) $ spełniające warunki z opisu problemu w drugim wierszu
Przykład:
Wejście:
5 2 4 6 8 10
Wyjście:
NO YES 2 4 1 5 NO YES 2 4 6 8 1 3 5 11 NO
Kod źródłowy w C:
#include <stdio.h> #include <stdlib.h> int main() { int t, i, n; scanf("%d",&t); while(t--) { scanf("%d",&n); if((n/2)&1) { printf("NO\n"); continue; } printf("YES\n"); for(i=2; i<=n; i+=2) { printf("%d ",i); } for(int i=1; i<n-1; i+=2) { printf("%d ",i); } printf("%d\n",n+n/2-1); } return 0; }
Kod źródłowy w C++:
#include <iostream> using namespace std; int main() { int t, n; cin>>t; while(t--) { cin>>n; if((n/2)&1) { cout<<"NO"<<endl; continue; } cout<<"YES"<<endl; for(int i=2; i<=n; i+=2) { cout<<i<<" "; } for(int i=1; i<n-1; i+=2) { cout<<i<<" "; } cout<<n+n/2-1<<endl; } return 0; }
Źródło:
https://codeforces.com/contest/1343/problem/B