题意:
给定一个单调递增的数组,是否能通过任意调整顺序使对任意一个元素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(); }
标签:Beautiful,输出,int,Make,构造,long,数组 From: https://www.cnblogs.com/yaowww/p/17355650.html