2011年8月2日 星期二

[ACM 10107] What is the Median?

 內容 :
在統計學的世界中,中間數(median)扮演一個重要的角色。 根據定義:中間數就是在一連串已由小到大排序的數字中,排在中間

的那一個數。例如:在{1,3,4,9,11}中4就是中間數。萬一有偶數個數字,我們定 義中間數就是位於中間的那2個數的和除以2(而且

只取整數部分)。例如:在{1,2,3,6,7,8}中{3,6}是位於中間的2個數,所以中間數就是 (3+6)/2=4。
 輸入說明 :
輸入包含了N個(N<10000)的整數。
輸出說明 :
對每一個輸入,請輸出到現在為止已輸入的數的中間數。
範例輸入 :
1 3 4 60 70 50 2

範例輸出 :
1 2 3 3 4 27 4






/**********************************************************************************/
/*  Problem: c010 "What is the Median?" from ACM 10107                

           */
/*  Language: C                          

                               

        */
/*  Result: AC (418ms, 394KB) on ZeroJudge                  

                     */
/*  Author: diiuuli520 at 2008-08-17 02:21:34                  

                  */
/**********************************************************************************/
#include<stdio.h>
#include<stdlib.h>
int main(void)
    int a[100000],b,y=0,z,i=0,c,j,x; 
    while(scanf("%d",&a[i])!=EOF){
        y++;
        x=i; 
        for(j=i;j>0;j--){ 
           if(a[x]<a[x-1]){
             z=a[x];
             a[x]=a[x-1];
             a[x-1]=z;
             x-=1; 
             } 
           else
             j==0; 
           } 
        if(y==1)
          printf("%d\n",a[i]);
        else if(y%2==0){
          b=y/2; 
          z=a[b-1]+a[b];
          z/=2; 
          printf("%d\n",z);
        }
        else{ 
          b=y/2;
          printf("%d\n",a[b]); 
           } 
        i++; 
    } 
    return(0); 
}

沒有留言:

張貼留言