链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
对于数组中的每一个数字A,需要在数组中的“其他”数字中找到一个B,使得A+B最大
#define int long long
const int N=1e5;
int arr[N];
priority_queue <int,vector<int>,less<int> >q;//降序
signed main()
{
std::ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
int n;cin>>n;
for( int i=0;i<n;++i) {
cin>>arr[i];
q.push(arr[i]);}//优先队列是个好玩的东西!
int b=q.top();q.pop();//b是第一大是数
int c=q.top();//c是第二大的数
for( int i=0;i<n;++i) {
if( arr[i]==b ) cout<<arr[i]+c<<" ";//最大的数不能找自己,要找第二大的数
else cout<<arr[i]+b<<" ";//除最大的数以外,要找最大的就好了
}
return 0;
}