CF303C Minimum Modular 题解

Super_Cube

2024-11-19 20:26:50

Solution

Solution

因为答案最大不超过值域,考虑枚举 m

时间复杂度好像是 $O(n^2+V\ln V+k^2V)$。 # Code ```cpp #include<bits/stdc++.h> int cnt[1000005]; int vis[1000005]; int a[5005]; int n,m; int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;++i){ scanf("%d",&a[i]); for(int j=i-1;j;--j) ++cnt[std::abs(a[i]-a[j])]; } for(int i=1,sum;i<=1000000;++i){ sum=0; for(int j=i;sum<=(m*(m+1)>>1)&&j<=1000000;j+=i)sum+=cnt[j]; if(sum>(m*(m+1)>>1))continue; sum=0; for(int j=1;j<=n;++j) if(vis[a[j]%i]!=i)vis[a[j]%i]=i; else if(++sum==m+1)break; if(sum!=m+1)return 0&printf("%d",i); } return 0; } ```