Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #include <ext/pb_ds/assoc_container.hpp>
- using namespace __gnu_pbds;
- using namespace std;
- #define int long long
- #define ps(x,y) fixed<<setprecision(y)<<x
- #define ld long double
- #define fastio ios_base::sync_with_stdio(false); cin.tie(NULL);
- #define endl "\n"
- #define setbits(x) __builtin_popcount(x)
- #define gcd(a,b) __gcd(a,b)
- #define minv(v) *min_element(v.begin(), v.end())
- #define maxv(v) *max_element(v.begin(), v.end())
- #define print(v) for(auto k : v) cout<<k<<" "; cout<<endl;
- const int mod = 1e9+7;
- const int bit = 31;
- #define input(a) for(int i=0; i<a.size(); i++) cin>>a[i];
- typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> pbds;
- //__________________________________________________________________________________________________________________
- int32_t main()
- {
- fastio;
- int t;
- cin>>t;
- while(t--)
- {
- int n;
- cin>>n;
- vector<int> arr(n);
- input(arr);
- sort(arr.begin(), arr.end());
- int j = n-1;
- vector<int> temp(n);
- for(int i=1; i<n; i+=2){
- temp[i] = arr[j--];
- }
- for(int i=0; i<n; i+=2){
- temp[i] = arr[j--];
- }
- bool possible = true;
- for(int i=0; i<n; i++)
- {
- int left = temp[(i == 0 ? n-1 : i-1)];
- int right = temp[(i == n-1 ? 0 : i+1)];
- if(temp[i] < left && temp[i] < right)
- {
- }
- else if(temp[i] > left && temp[i] > right)
- {
- }
- else
- possible = false;
- }
- if(possible){
- cout<<"YES"<<endl;
- print(temp);
- }
- else
- cout<<"NO"<<endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement