Friday 30 June 2017

UVA 10107 - What is the Median?

Problem : What is the Median?
Median plays an important role in the world of statistics. By definition, it is a value which divides an array into two equal parts. In this problem you are to determine the current median of some long integers. 
Suppose, we have five numbers {1,3,6,2,7}. In this case, 3 is the median as it has exactly two numbers on its each side. {1,2} and {6,7}. 
If there are even number of values like {1,3,6,2,7,8}, only one value cannot split this array into equal two parts, so we consider the average of the middle values {3,6}. Thus, the median will be (3+6)/2 = 4.5. In this problem, you have to print only the integer part, not the fractional. As a result, according to this problem, the median will be 4! 

Input 
The input file consists of series of integers X ( 0 <= X < 2^31 ) and total number of integers N is less than 10000. The numbers may have leading or trailing spaces. 

Output 
For each input print the current value of the median. 

Sample Input 
1
3
4
60
70
50
2

Sample Output 
1
2
3
3
4
27

4


My accepted code is given below:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    long long c,i,ar[10009],x,md;
    c=0;
    while(cin>>ar[c])
    {
 //cout<<"c="<<c<<endl;
        c++;

        sort(ar,ar+c);
        if(c%2==1)
        {
            x=(c+1)/2;
            md=ar[x-1];
            //cout<<x-1<<" "<<md<<endl;
        }
        else
        {
            x=c/2;

            md=ar[x-1]+ar[x];
            md/=2;
            //cout<<x-1<<" "<<ar[x-1]<<" "<<ar[x]<<endl;
        }
        cout<<md<<endl;
    }
    return 0;
}

No comments:

Post a Comment