Cod sursa(job #744057)

Utilizator padreatiAurelian Tutuianu padreati Data 7 mai 2012 10:47:26
Problema Elementul majoritar Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <stack>
#include <cstdlib>
#include <vector>
#include <algorithm>
#include <string.h>

using namespace std;

void sol();

int main() {
#ifdef PADREATI
    freopen("in.txt", "r", stdin);
#else
    freopen("elmaj.in", "r", stdin);
    freopen("elmaj.out", "w", stdout);
#endif
    sol();
    return 0;
}

#define ull unsigned long long int

#define N 1000000
#define D 33

int n;
ull v[N];
int h[D];

void sol() {
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        scanf("%llu", &v[i]);
    }

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < D; j++) {
            if ((v[i] & (1ULL << j)) > 0) {
                h[j]++;
            }
        }
    }
    ull mask = 0ULL;
    for (int i = 0; i < D; i++) {
        if (h[i] >= n / 2 + 1) {
            mask += 1ULL << i;
        }
    }
    int cnt = 0;
    for (int i = 0; i < n; i++) if (v[i] == mask)cnt++;
    if (cnt <= n / 2) {
        printf("-1\n");
        return;
    }
    printf("%llu %d", mask, cnt);

}