题意:给两个长为
一道一开始拿到毫无思路的题(于是求和乱推了一下式子准备 O(n) 求解结果错了)。
容易发现可以 O( ) 求解,于是我们开始乱暴力。
首先由于
首先将
然后我们将
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#define INF 9223372036854775807LL
using namespace std;
const int maxn=2010;
long long n,m,ans=INF,x=INF;
long long a[maxn],b[maxn<<1];
int main()
{
scanf("%lld%lld",&n,&m);
for(int i=1;i<=n;i++)
scanf("%lld",&a[i]);
sort(a+1,a+n+1);
for(int i=1;i<=n;i++)
scanf("%lld",&b[i]);
sort(b+1,b+n+1);
for(int i=1;i<=n;i++)
b[i+n]=b[i];
for(int i=0;i<n;i++)
{
x=(b[1+i]-a[1]+m)%m;
for(int j=1;j<=n;j++)
if((b[j+i]-a[j]+m)%m!=x)
{
x=INF;
break;
}
ans=min(ans,x);
}
printf("%lld",ans);
return 0;
}