Pagini recente » Cod sursa (job #1781640) | Cod sursa (job #688314) | Cod sursa (job #698549) | Clasament dupa rating | Cod sursa (job #1020912)
#include <cstdio>
#include <cstdlib>
#define Nmax 1000005
#define baza 256
#define nbaza 8
using namespace std;
int a[Nmax],n,m,b[Nmax];
int bucket[baza];
void radixsort(int n)
{
int exp = 1;
while (m >> exp > 0)
{
for(register int i=0;i<10;i++) bucket[i]=0;
for(register int i = 0; i < n; i++)
bucket[ a[i]>>(nbaza-1) & (baza-1)]++;
for (int i = 1; i < baza; i++)
bucket[i] += bucket[i - 1];
for (int i = n - 1; i >= 0; i--)
b[ --bucket [(a[i]>>(nbaza-1) ) & (baza-1)]] = a[i] ;
for (int i = 0; i < n; i++) a[i] = b[i];
exp *= nbaza-1;
}
}
int main()
{ freopen("elmaj.in","rt",stdin);
freopen("elmaj.out","wt",stdout);
scanf("%d", &n);
for (int i = 0; i < n; i++)
{scanf("%d", &a[i]);
m=(a[i]>m) ? a[i] : m;
}
radixsort(n);
int k=1,t; m=0;
for(int i=0;i<n;i++)
if(a[i]==a[i+1]) k++;
else {if(m<k) {m=k; t=a[i];} k=1;}
if(m > n/2) printf("%d %d\n",t,m);
else printf("-1\n");
return 0;
}