[丛雨]得到了一个长度为n的数组A和一个长度为m的数组 B,但是她并不满意,她决定发明一个数组C,满足对于每个i,存在j∈ [1, m]使得ci=ai&bj。但是丛雨发现这样的 C 数组太多了,她想请你最大化c1|c2|c3 . . . cn(&是按位与,|是按位或)。
第一行两个整数n, m,分别表示数组A,B的长度。第二行n个整数,表示a1, a2, . . . , an第三行m个整数,表示b1, b2, . . . , bm。
一行一个整数表示c1|c2|c3 . . . cn的最大值。
8 5
179 261 432 162 82 43 10 38
379 357 202 184 197
147
对于20%的数据,保证m=1。
对于另外20%的数据,保证1≤n, m≤7。
对于另外20%的数据,保证1≤n, m≤50,0≤ai, bi<2^5。
对于100%的数据,保证1≤n, m≤200,0≤ai, bi<2^9。
#include<bits/stdc++.h>
using namespace std;
long long n,m,a[1005],b[1005],c[1005],dd;
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=m;i++)
{
cin>>b[i];
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
c[i]=max(c[i],a[i]&b[j]);
}
}
dd=c[1];
for(int i=2;i<=n;i++)
{
dd=dd|c[i];
}
cout<<dd;
return 0;
}
怎么错了?