AC:
#include<bits/stdc++.h>
#define ri register int
#define ll long long
#define ld long double
#define mkp make_pair
using namespace std;
const int maxn=3e5+7;
int n,k;
int a[maxn];
ll sum[maxn];
signed main(){
ios::sync_with_stdio(0);
cin>>n;
for(ri i=1;i<=n;i++)cin>>a[i];
sort(a+1,a+1+n);
for(ri i=1;i<=n;i++){
sum[i]=sum[i-1]+a[i];
}
ll ans=0;
for(ri i=1;i<=n;i++){
ans+=sum[i-1];
ans+=1ll*(i-1)*a[i];
int pos=lower_bound(a+1,a+1+n,100000000-a[i])-a;
ans-=1ll*(100000000)*(i-min(pos,i));
}
cout<<ans<<endl;
return 0;
}
将 100000000 换成 1e8 就会 WA。
赛时瞪了半天自己的代码,抱着试一试的心理将 1e8 改成 100000000 ,然后就过了,对此表示十分疑惑。