记录编号 364272 评测结果 AAAAAAAAAA
题目名称 按位或最大值 最终得分 100
用户昵称 GravatarFoolMike 是否通过 通过
代码语言 C++ 运行时间 0.884 s
提交时间 2017-01-15 21:44:45 内存使用 8.29 MiB
显示代码纯文本
  1. #include<cstdio>
  2. #include<algorithm>
  3. using namespace std;
  4. const int N=1<<20;
  5. int n,ans,Max[N],ok[N];
  6. int main()
  7. {
  8. freopen("or_max.in","r",stdin);
  9. freopen("or_max.out","w",stdout);
  10. scanf("%d",&n);
  11. for (int i=1,x;i<=n;i++)
  12. scanf("%d",&x),ok[x]=1;
  13. for (int i=0;i<20;i++)
  14. for (int j=0;j<N;j++)
  15. if (j>>i&1) ok[j^(1<<i)]|=ok[j];
  16. for (int i=0;i<N;i++)
  17. if (ok[i]) Max[i]=i;
  18. for (int i=0;i<20;i++)
  19. for (int j=0;j<N;j++)
  20. if (j>>i&1) Max[j]=max(Max[j],Max[j^(1<<i)]);
  21. for (int i=0;i<N;i++)
  22. if (ok[i]) ans=max(ans,i|Max[(N-1)^i]);
  23. printf("%d\n",ans);
  24. return 0;
  25. }