只过了sub4, 样例都过了
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=2e5+10;
int arr[maxn],cmp[maxn];
int sum[maxn*2],cnt[maxn*2];
int a=0,b=0;
signed main(){
int T;
scanf("%lld",&T);
while(T--){
// memset(sum,0,sizeof(sum));
// memset(cnt,0,sizeof(cnt));
// memset(arr,0,sizeof(arr));
// memset(cmp,0,sizeof(cmp));
int n;
scanf("%lld",&n);
for(int i=1;i<=n;i++){
scanf("%lld",&arr[i]);
}
for(int i=1;i<=n;i++){
cmp[i]=arr[(i+1)%n]-arr[i];
if(cmp[i]<0) cmp[i]=0;
else cmp[i]=1;
cmp[i+n]=cmp[i];
}
// for(int i=1;i<=2*n;i++){
// printf("%lld ",cmp[i]);
// }
// printf("\n");
for(int i=1;i<=2*n;i++){
sum[i]=sum[i-1]+cmp[i],cnt[i]=cnt[i-1]+cmp[i]*i;
}
// for(int i=1;i<=2*n;i++){
// printf("%lld ",sum[i]);
// }
// printf("\n");
// for(int i=1;i<=n*2;i++){
// printf("%lld ",cnt[i]);
// }
// printf("\n\n");
int ans=0x3f3f3f3f3f3f3f3f;
int len=(n+1)/2;
for(int i=1;i<=n;i++){
int a1=sum[i+len-1]-sum[i-1],a2=sum[i+n-1]-sum[i+len-1];
int b1=cnt[i+len-1]-cnt[i-1],b2=cnt[i+n-1]-cnt[i+len-1];
a1=(2*(i+len-1)-a1+1)*a1/2,a2=(2*(i+len)+a2-1)*a2/2;
// printf("%lld %lld %lld %lld\n",a1,b1,a2,b2);
ans=min(ans,a1-b1+b2-a2);
}
// printf("\n\n");
printf("%lld\n",ans);
}
}