A. Make it Beautiful - 构造 + 数学

发布时间 2023-04-26 13:40:47作者: Yaowww

题意:

  给定一个单调递增的数组,是否能通过任意调整顺序使对任意一个元素a[i]满足a[i]!=a[1]+a[2]+a[3]+...+a[i-1],如果能,输出“YES”并输出修改后的数组;如果不能输出“NO”。

分析:

  如果数组元素都相等则一定不能满足条件,由于数组单调递增,所以只需要把a[1]后面的元素从大到小输出即可满足条件。

代码:

#include <bits/stdc++.h>

#define endl '\n'

using namespace std;

typedef long long ll;

const int N=60;

int a[N];

void solve()
{
    int t;
    cin>>t;
    while(t--)
    {
        int n;
        cin>>n;
        for(int i=1;i<=n;i++) cin>>a[i];
        if(a[1]==a[n])
        {
            cout<<"NO"<<'\n';
            continue;
        }
        cout<<"YES"<<'\n';
        cout<<a[1]<<' ';
        for(int i=n;i>1;i--) cout<<a[i]<<' ';
        cout<<'\n';
    }
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    
    solve();
}