读书人

10057 - A mid-summer nightamp;#39;s dr

发布时间: 2013-03-17 13:48:31 作者: rapoo

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;}

读书人网 >编程

热点推荐