Problem:
Score : 300 points

Problem Statement

There are N people living on a number line.

The i-th person lives at coordinate X_i.

You are going to hold a meeting that all N people have to attend.

The meeting can be held at any integer coordinate. If you choose to hold the meeting at coordinate P, the i-th person will spend (X_i - P)^2 points of stamina to attend the meeting.

Find the minimum total points of stamina the N people have to spend.

Constraints

All values in input are integers.

1 \leq N \leq 100

1 \leq X_i \leq 100

Input

Input is given from Standard Input in the following format:

N
X_1 X_2 ... X_N

Output

Print the minimum total stamina the N people have to spend.

Sample Input 1

2
1 4

Sample Output 1

5

Assume the meeting is held at coordinate 2. In this case, the first person will spend (1 - 2)^2 points of stamina, and the second person will spend (4 - 2)^2 = 4 points of stamina, for a total of 5 points of stamina. This is the minimum total stamina that the 2 people have to spend.

Note that you can hold the meeting only at an integer coordinate.

Sample Input 2

7
14 14 2 13 56 2 37

Sample Output 2

2354

Solution in C (GCC 5.4.1) (judge verdict: Wrong Answer)

#include<stdio.h>
#include<stdlib.h>
int main(void){

    int N;
    int* x;
  	scanf("%d",&N);
    x = (int *)malloc(sizeof(int)*N);
    for(int i=0;i<N;i++){
        scanf("%d",&x[i]);
    }
  	int max = x[0];
  	int min = x[0];
    for(int i=0;i<N;i++){
      if(x[i]>max){
      	max = x[i];
      }
      if(x[i]<min){
      	min = x[i];
      }
    }
  	long int *distance;
    distance = (long int *)malloc(sizeof(long int)*max);
  	long int temp=0;
  	int j=0;
    for (int i = 0; i < N; i++)
    {
        /*temp += (x[i]-x[j])*(x[i]-x[j]);  	
      		distance[i] = temp;*/
        for (int j = min; j <= max; j++)
        {
            distance[j] += (x[i] - j) * (x[i] - j);
        }
      	
    }
    for(int i=min;i<max-1;i++){
      for(int j=max-1;j>i;j--){
        if(distance[j-1]>distance[j]){
            swap2(&distance[j-1],&distance[j]);
        }
      }
    }
    printf("%ld",distance[min]);
    return 0;
}
void swap(int *a,int *b){
    int tmp;
    tmp = *a;
    *a = *b;
    *b = tmp;
}

void swap2(long int *a,long int *b){
    long int tmp;
    tmp = *a;
    *a = *b;
    *b = tmp;
}