记录编号 446486 评测结果 AAAAAAAAAA
题目名称 按位或最大值 最终得分 100
用户昵称 Gravatarsxysxy 是否通过 通过
代码语言 C++ 运行时间 0.279 s
提交时间 2017-09-08 13:55:01 内存使用 5.29 MiB
显示代码纯文本
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <functional>
#include <vector>
#include <cctype>
using namespace std;

namespace IO{
  char buf[1<<20], *fs, *ft;
  inline char readchar(){
    return (fs==ft&&(ft=(fs=buf)+fread(buf, 1, 1<<20, stdin)),fs==ft)?EOF:*fs++;
  }
  template<typename T>
  inline void splay(T &res){
    char c;
    while(c = readchar()){
      if(isdigit(c)){
        res = c^0x30; break;
      }
    }
    while(isdigit(c = readchar()))
      res = res*10 + (c^0x30);
  }
}using IO::splay;

template<int sig>
void FWT_OR(int a[], int n){
  for(int len = 2; len <= n; len <<= 1)
    for(int s = 0; s < n; s += len)
      for(int p = 0; p < (len>>1); p++)
        a[s+p+(len>>1)] += a[s+p]*sig;
}

int a[(1<<20)+233] = {0};

int main(){
  //freopen("test_data.txt", "r", stdin);
  freopen("or_max.in", "r", stdin);
  freopen("or_max.out", "w", stdout);
  int n; splay(n);
  for(int i = 0; i < n; i++){
    int x; splay(x); 
    a[x] = 1;
  }
  FWT_OR<1>(a, 1<<20);
  for(int i = 0; i < (1<<20); i++)a[i] *= a[i];
  FWT_OR<-1>(a, 1<<20);
  for(int i = (1<<20)-1; ~i; i--)if(a[i]){
    printf("%d\n", i);
    break;
  }
  return 0;
}