开始题目理解错了,wa了几次。
第二个数字是指input里面满足要求的所有数字的个数,我理解成了最小的那个数字的个数。。。。
整体比较简单,就是找中位数
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define MAX 70000
using namespace std;
int N,s[MAX];
int all,small,MAXX;
void solve()
{
int i=0,j,t,help;
for(j=0;j<=MAXX;j++)
{
i+=s[j];
if(i>=all-i)
break;
}
if(i>all-i)
{
t=j,help=0;
}
else
{
help=1;
for(t=j+1;t<=MAXX;t++)
{
if(s[t]!=0)
break;
}
}
printf("%d %d %d\n",j,s[j]+help,t-j+1);
}
int main()
{
int i,j;
while(scanf("%d",&N)!=EOF)
{
all=0;
MAXX=-1;
memset(s,0,MAX*4);
for(i=0;i<N;i++)
{
scanf("%d",&j);
all++;
s[j]++;
if(j>MAXX)
MAXX=j;
}
solve();
}
return 0;
}