RT,测试代码:
#include <bits/stdc++.h>
using namespace std;
#define int long long
int n;
int T;
int a[200005];
int rank_[200005];
int A[200005];
void Sub_1(){
int ans=-2147483647;
int now=0;
while (next_permutation(A+1,A+1+n)){
now=0;
for(int i = 1; i<=n; i++){
if(A[i]>i){
now-=a[i];
}
else if (A[i]<i){
now+=a[i];
}
}
if(now>ans) ans=now;
}
printf("%lld\n",ans);
}
void SP_A(){
if(a[1]==0){
puts("0");
}
if(a[1]>0){
printf("%lld\n",max(0ll,(n-2)*a[1]));
}
if(a[1]<0){
printf("%lld\n",max(0ll,(2-n)*a[1]));
}
return;
}
signed main(){
scanf("%lld",&T);
while (T--){
scanf("%lld",&n);
for(int i = 1; i<=n; i++){
scanf("%lld",a+i);
}
bool t=true;
for(int i = 1; i<=n; i++){
scanf("%lld",a+i);
if((i>1)&&(a[i]!=a[i-1])){
t=false;
}
rank_[i]=i;
A[i]=i;
}
if(n<=8){
Sub_1();
}
else{
sort(a+1,a+1+n,less<int>());
if(a[1]==a[2]){
SP_A();
}
// else{
// exit(1);
// }
}
if(!t) exit(1);
}
return 0;
}