Pagini recente » Cod sursa (job #1789532) | Cod sursa (job #944512) | Cod sursa (job #1101632) | Cod sursa (job #2112849) | Cod sursa (job #1020920)
#include <cstdio>
#include <cstdlib>
#define Nmax 1000005
using namespace std;
int a[Nmax],n,m,b[Nmax];
int bucket[1000];
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] / exp) % 1000]++;
for (int i = 1; i < 1000; i++)
bucket[i] += bucket[i - 1];
for (int i = n - 1; i >= 0; i--)
b[ --bucket [(a[i] / exp) % 1000]] = a[i] ;
for (int i = 0; i < n; i++) a[i] = b[i];
exp *= 1000;
}
}
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;
}