Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
41810 黄子睿 【S】T4 C++ 解答错误 55 45 MS 1828 KB 1191 2026-05-29 20:47:02

Tests(76/80):


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


测评信息: