关键:a数组中的数变换后与b数组中的数唯一对应
AC_Code
1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int maxn=2010; 5 const int inf=0x3f3f3f3f; 6 7 int main() 8 { 9 int n,m; 10 int a[maxn],b[maxn]; 11 scanf("%d%d",&n,&m); 12 for(int i=0;i<n;i++){ 13 scanf("%d",&a[i]); 14 } 15 for(int j=0;j<n;j++){ 16 scanf("%d",&b[j]); 17 } 18 sort(a,a+n); 19 sort(b,b+n); 20 int ans=inf; 21 for(int i=0;i<n;i++){ 22 int x=(b[i]-a[0]+m)%m; 23 bool ok=true; 24 for(int j=0;j<n;j++){ 25 if( (a[j]+x)%m!=b[(i+j)%n] ){ 26 ok=false; 27 break; 28 } 29 } 30 if( ok ) ans=min(ans,x); 31 } 32 printf("%d\n",ans); 33 return 0; 34 }