首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

10057 - A mid-summer night's dream

2013-03-17 
10057 - A mid-summer nights dream.描述:先对数组排序,第一个数是找出中间数,第二个数是找出与此相同的数

10057 - A mid-summer night's dream.

描述:先对数组排序,第一个数是找出中间数,第二个数是找出与此相同的数有多少,第三个数是两个数的区间内有多少数#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;}

热点排行