Pagini recente » Cod sursa (job #2962782) | Cod sursa (job #508443) | Cod sursa (job #1901772) | Cod sursa (job #982191) | Cod sursa (job #2788638)
/// complexitate O(n*log n) 90 pct.
#include <bits/stdc++.h>
using namespace std;
ifstream f("elmaj.in"); ofstream g("elmaj.out");
int n,a[1000001];
int dig[3][1000];
int main()
{ f>>n;
for(int i=0;i<n;i++) f>>a[i];
for(int i=0;i<n;i++)
{ int aux=a[i];
for (int j=0;j<3;j++) {dig[j][aux%1000]++; aux/=1000;}
}
int ret=0;
for(int i=0;i<=999;i++)
{ if(dig[0][i]> n/2) ret+=i;
if(dig[1][i]> n/2) ret+=i*1000;
if(dig[2][i]> n/2) ret+=i*1000000;
}
int nr = 0;
for (int i = 0; i < n; i++)
if(a[i]==ret) nr++;
if(nr>n/2) g<<ret<<' '<<nr; else g<<-1;
g.close(); f.close(); return 0;
}
/**
int digitMajority(int n, int[] a) {
int[][] dig = new int[3][1000];
for (int i = 0; i < n; i++) {
int aux = a[i];
for (int j = 0; j < 3; j++) {
dig[j][aux % 1000]++;
aux /= 1000;
}
}
int ret = 0;
for (int i = 0; i < 999; i++) {
if (dig[0][i] > n/2)
ret += i;
if (dig[1][i] > n/2)
ret += i * 1000;
if (dig[2][i] > n/2)
ret += i * 1000000;
}
int nr = 0;
for (int I = 0; I < n; i++) {
if (a[i] == ret)
nr++;
}
if (nr > n/2)
return ret;
else
return -1;
}
*/