题意:
解法:
对数组从小到大排序,
枚举每个数作为最大值时的贡献.
对于a[i],需要乘上左边每个数作为最小值的贡献,
用一个变量维护左边每个数作为最小值的贡献即可.
code:
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxm=1e6+5;
const int mod=998244353;
int a[maxm];
int n;
void solve(){
int n;cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+1+n);
int ans=0;
int pre=0;
for(int i=1;i<=n;i++){
ans+=a[i]*a[i]%mod;
ans+=a[i]*pre%mod;
ans%=mod;
pre=(pre*2+a[i])%mod;
}
cout<<ans<<endl;
}
signed main(){
ios::sync_with_stdio(0);
solve();
return 0;
}