19~21测试点是否不止有特殊性质C?
查看原帖
19~21测试点是否不止有特殊性质C?
809765
Limitless_lmw楼主2023/10/15 07:49

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;
}

评测记录

2023/10/15 07:49
加载中...