记录编号 |
446486 |
评测结果 |
AAAAAAAAAA |
题目名称 |
按位或最大值 |
最终得分 |
100 |
用户昵称 |
sxysxy |
是否通过 |
通过 |
代码语言 |
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;
}