| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 41811 | 黄子睿 | 【S】T4 | C++ | 通过 | 100 | 44 MS | 3392 KB | 1287 | 2026-05-29 20:48:06 |
#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; }