Pagini recente » Cod sursa (job #657667) | Clasament preobi | Cod sursa (job #641195) | Cod sursa (job #2895930) | Cod sursa (job #1020924)
#include <cstdio>
#include <cstdlib>
#define Nmax 1000005
#define baza 10000
using namespace std;
int a[Nmax],n,m,b[Nmax];
int bucket[baza];
int k=1,t,ma=0;
void radixsort(int n)
{
int exp = 1;
while (m / exp > 0)
{
for(register int i=0;i<baza;i++) bucket[i]=0;
for(register int i = 0; i < n; i++)
bucket[ (a[i] / exp) % baza]++;
for (int i = 1; i < baza; i++)
bucket[i] += bucket[i - 1];
for (int i = n - 1; i >= 0; i--)
b[ --bucket [(a[i] / exp) % baza]] = a[i] ;
a[1]=b[1]; k=1;
for (int i = 1; i < n; i++)
{a[i] = b[i];
if(a[i]==a[i-1]) k++;
else {if(ma<k) {ma=k; t=a[i];} k=1;}
}
if(ma>n/2) {break;}
exp *= baza;
}
}
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);
if(ma > n/2) printf("%d %d\n",t,ma);
else printf("-1\n");
return 0;
}