Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define FOR(i,a,b) for(i=a;i<=b;i++)
- #define FOD(i,a,b) for(i=a;i>=b;i--)
- using namespace std;
- long long i,n,d[1005],alg[1005][62],x,k,j,s,q,MAX;
- bool kt;
- int main(){
- pair<long long,long long> a[1005];
- cin>>n;
- FOR(i,1,n) cin>>a[i].first;
- FOR(i,1,n) cin>>a[i].second;
- sort(a+1,a+1+n);
- k=0;
- FOR(i,1,n-1)
- {
- if (a[i].first==a[i+1].first) d[++k]=i;
- }
- FOR(i,1,n)
- {
- x=a[i].first;
- FOR(j,1,60) {alg[i][j]=x%2; x/=2;}
- }
- // FOR(i,1,n)
- // {FOR(j,1,4)
- // cout<<alg[i][j]<<" ";
- // cout<<endl;}
- FOR(i,1,k)
- {
- // cout<<i<<" "<<a[d[i]].first<<endl;
- s=0;
- FOR(j,1,n)
- {
- kt=true;
- FOR(q,1,60) if (alg[d[i]][q]<alg[j][q]) kt=false;
- if (kt==true) s+=a[j].second;
- }
- if (s>MAX) MAX=s;
- }
- cout<<MAX;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement