Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <set>
- #include <string.h>
- #include <stdio.h>
- using namespace std;
- int main()
- {
- long long int N;
- scanf("%lld", &N);
- unsigned long long int arr[32][2];
- long long int marked[32], maxn = -1;
- memset(arr, 0, sizeof(int)*32*2);
- fill_n(marked, 32, 0);
- for(long long int i = 0; i<N; i++){
- unsigned long long int t;
- scanf("%u", &t);
- int pow = 0;
- unsigned long long int num = 1<<pow;
- while(num <= t){
- if((num & t) > 0){
- marked[pow]++;
- if((marked[pow] > 1) && (maxn < pow))
- maxn = pow;
- if(arr[pow][0] < t){
- arr[pow][1] = arr[pow][0];
- arr[pow][0] = t;
- } else if(arr[pow][1] < t)
- arr[pow][1] = t;
- }
- pow++;
- num = 1<<pow;
- }
- }
- if(maxn == -1) printf("0\n");
- else
- printf("%u\n", (arr[maxn][0] & arr[maxn][1]));
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement