| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 41810 | 黄子睿 | 【S】T4 | C++ | 解答错误 | 55 | 45 MS | 1828 KB | 1191 | 2026-05-29 20:47:02 |
#include<bits/stdc++.h> using namespace std; const int N=2e5+10; int t,n,m; int a[N]; int b[N]; int c[N]; long long ans; int main(){ scanf("%d",&t); while(t--){ ans=INT_MAX; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int 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(int 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(int i=1;i<=n/2;i++) sum+=(m-c[i]); long long ji1=0,ji2=0; for(int i=1;i<=sum/m;i++){ ji1+=c[i]; } for(int 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<int>()); sum=0; for(int i=1;i<=n/2;i++) sum+=c[i]; ji1=0,ji2=0; for(int i=1;i<=sum/m;i++){ ji1+=(m-c[i]); } for(int i=sum/m+1;i<=n/2;i++) ji2+=c[i]; ans=min(ans,max(ji1,ji2)); printf("%lld\n",ans); } return 0; }