Codeforces Round #320 (Div. 2)D. "Or" Game
2015-09-17 18:44
337 查看
D. "Or" Game time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output
You are given n numbers a1, a2, …, an. You can perform at most k operations. For each operation you can multiply one of the numbers by x. We want to make as large as possible, where denotes the bitwise OR.
Find the maximum possible value of after performing at most k operations optimally.
Input
The first line contains three integers n, k and x (1 ≤ n ≤ 200 000, 1 ≤ k ≤ 10, 2 ≤ x ≤ 8).
The second line contains n integers a1, a2, …, an (0 ≤ ai ≤ 109).
Output
Output the maximum value of a bitwise OR of sequence elements after performing operations.
Sample test(s)
input
3 1 2
1 1 1
output
3
input
4 2 3
1 2 4 8
output
79
Note
For the first sample, any possible choice of doing one operation will result the same three numbers 1, 1, 2 so the result is .
For the second sample if we multiply 8 by 3 two times we’ll get 72. In this case the numbers will become 1, 2, 4, 72 so the OR value will be 79 and is the largest possible result.
注意:要预处理 不然会超时
#include<iostream> #include<cstdio> #include<cstring> #include <algorithm> #include<queue> #include<cmath> using namespace std; long long a[200002],b[200002],tt[200002]; int main() { int x,k,n,m,i,j; while(scanf("%d%d%d",&n,&k,&x)==3) { for(i=0; i<n; i++) { scanf("%I64d",&a[i]); } long long sum=1,maxn=0,temp; for(i=0; i<k; i++) sum*=x; b[0]=a[0]; for(i=1;i<n;i++) ///预处理 { b[i]=b[i-1]|a[i]; } tt[n-1]=a[n-1]; for(i=n-2;i>=0;i--) ///预处理 { tt[i]=tt[i+1]|a[i]; } for(i=0;i<n; i++) { temp=sum*a[i]; temp=temp|b[i-1]|tt[i+1]; maxn=maxn>temp?maxn:temp; } printf("%I64d\n",maxn); } return 0; }
相关文章推荐
- 关于SOCKET 接收发送 缓冲区 测试 SO_SNDBUF
- Activity总结
- 函数后面加const
- 蘑菇街2015校招技术类笔试题A卷,回忆版(杭州站)
- Android中GridView使用
- Cocos2d-x从入门到精通第17课《变速动作》
- Linux信号编程实践(二) 信号发送函数和可重入函数
- 日记 - aop
- 在Eclipse里查看Java字节码
- 二叉树的遍历-递归与非递归 - 海子
- httpd: Could not reliably determine the server's fully qualified domain name
- MIPS 通用寄存器
- JS事件知识的一些小整理
- Android Studio中aidl文件生成java文件
- SQL Server学习记录之set nocount on
- 如何生成DLL工程
- Android Make脚本简记
- Arcgis For Android 实现元素屏幕居中
- 谈谈session的生命周期
- Struts2 显示日期类型