您的位置:首页 > 其它

10057 - A mid-summer night's dream.

2013-03-13 22:08 387 查看
描述:先对数组排序,第一个数是找出中间数,第二个数是找出与此相同的数有多少,第三个数是两个数的区间内有多少数
#include <cstdio>
#include <cstdlib>
int cmp(const void *p1,const void *p2)
{
return *(int*)p1 - *(int*)p2;
}
int num[1000010];
int main()
{
//freopen("a.txt","r",stdin);
int n;
while(scanf("%d",&n)!=EOF)
{
for(int i=0; i<n; i++) scanf("%d",&num[i]);
qsort(num,n,sizeof(int),cmp);
int k=0;
int a=1,b;
if(n%2==0)
{
k=num[n/2-1];
b=num[n/2]-k+1;
}
else
{
k=num[n/2];
b=1;
}
if(n%2==1)
{
for(int i=n/2+1; i<n; i++)
if(num[i]==k) a++;
else break;
for(int i=n/2-1; i>=0; i--)
if(num[i]==k) a++;
else break;
}
else
{
for(int i=n/2; i<n; i++)
if(num[i]==num[n/2]) a++;
else break;
for(int i=n/2-2; i>=0; i--)
if(num[i]==k) a++;
else break;
}
printf("%d %d %d\n",k,a,b);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: