记录编号 |
425100 |
评测结果 |
AAAAAAAAAA |
题目名称 |
序列最小值 |
最终得分 |
100 |
用户昵称 |
AntiLeaf |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.970 s |
提交时间 |
2017-07-14 17:51:20 |
内存使用 |
8.29 MiB |
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=1048577;
void FWT_and(long long*,int,int);
long long A[maxn];
int n;
int main(){
freopen("and_min.in","r",stdin);
freopen("and_min.out","w",stdout);
scanf("%d",&n);
while(n--){
int x;
scanf("%d",&x);
A[x]++;
}
FWT_and(A,1<<20,1);
for(int i=0;i<(1<<20);i++)A[i]*=A[i];
FWT_and(A,1<<20,-1);
int ans=0;
while(!A[ans])ans++;
printf("%d\n",ans);
return 0;
}
void FWT_and(long long *A,int n,int tp){
for(int k=2;k<=n;k<<=1)for(int i=0;i<n;i+=k)
for(int j=0;j<(k>>1);j++)A[i+j]+=tp*A[i+j+(k>>1)];
}