Description
在n个数中,找出出现次数最多那个数字,并且输出出现的次数。如果有多个结果,输出数字最小的那一个。
Input
单组数据,第一行数字n(1<=n<=100000)。
接下来有n个数字,每个数字不超过100000000
Output
出现次数最多的数字和次数。
Sample
Input
3
1 1 2
Output
1 2
Hint
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node
{
int num,sum;
struct node *next;
} Node;
int sumn,numn;
Node* Insert(Node *p,int k)
{
if(p==NULL)
{
Node *q=(Node*)malloc(sizeof(Node));
q->num=k;
q->sum=1;
q->next=p;
if(q->sum>sumn||(q->sum==sumn&&q->num<numn))
{
sumn=q->sum;
numn=q->num;
}
return q;
}
if(p->num==k)
{
p->sum++;
if(p->sum>sumn||(p->sum==sumn&&p->num<numn))
{
sumn=p->sum;
numn=p->num;
}
}
else p->next=Insert(p->next,k);
return p;
}
int main()
{
int n,k;
Node *a[10000];
sumn=numn=0;
scanf("%d",&n);
for(int i=0; i<10000; i++)
a[i]=NULL;
while(n--)
{
scanf("%d",&k);
a[k%10000]=Insert(a[k%10000],k);
}
printf("%d %d",numn,sumn);
return 0;
}