提交时间:2026-05-29 20:48:06
运行 ID: 41811
#include<bits/stdc++.h> using namespace std; const long long N=2e5+10; long long t,n,m; long long a[N]; long long b[N]; long long c[N]; long long ans; int main(){ scanf("%d",&t); while(t--){ ans=LONG_LONG_MAX; scanf("%d%d",&n,&m); for(long long i=1;i<=n;i++) scanf("%d",&a[i]); for(long long i=1;i<=n/2;i++){ b[i]=a[i]-a[n+1-i]; while(b[i]<0) b[i]+=m; b[i]%=m; } for(long long i=1;i<=n/2;i++){ c[i]=b[i]-b[i-1]; while(c[i]<0) c[i]+=m; c[i]%=m; } sort(c+1,c+(n/2)+1); long long sum=0; for(long long i=1;i<=n/2;i++) sum+=(m-c[i]); long long ji1=0,ji2=0; for(long long i=1;i<=sum/m;i++){ ji1+=c[i]; } for(long long i=sum/m+1;i<=n/2;i++) ji2+=(m-c[i]); ans=min(ans,max(ji1,ji2)); sort(c+1,c+(n/2)+1,greater<long long>()); sum=0; for(long long i=1;i<=n/2;i++) sum+=c[i]; ji1=0,ji2=0; for(long long i=1;i<=sum/m;i++){ ji1+=(m-c[i]); } for(long long i=sum/m+1;i<=n/2;i++) ji2+=c[i]; ans=min(ans,max(ji1,ji2)); printf("%lld\n",ans); } return 0; }