题目描述
你有一个长度为n的序列a1,...,an。你想从中提取一个子序列ai1,...,aim,子序列应当满足
- m≥1
- 1≤i1<i2<i3<...<im≤n
你希望在此前提下最大化ai1+∑j=2maij op aij−1
请你针对op=and,op=or,op=xor三种情况分别求解并输出答案。
这里and,or,xor表示位运算与,或,异或。
输入格式
第一行一个正整数n。
接下来一行n个整数表示a1,...,an。
输出格式
输出一行三个整数分别表示ai1+∑j=2maij op aij−1中op取and,or,xor时的最大值,用空格隔开。
样例
5
1 2 3 4 5
8 19 13
解释 #1
op=and时,选取4,5作为子序列使得式子最大,值为4+4 and 5=8。
op=or时,选取1,2,3,4,5作为子序列使得式子最大,值为1+1 or 2+2 or 3+3 or 4+4 or 5=19
op=xor时,选取1,2,3,4,5最大,值为$1+1\ xor\ 2+2\ xor\ 3+3\ xor\ 4+ 4\ xor \ 5=1+3+1+7+1=13$
10
100 127 64 98 1 40 31 78 99 2
462 960 642
数据范围
对于100%的数据,1≤n≤105,0≤ai<216