Description:

请你找一个适当的C,使得上式结果最小( 2 &lt; n &lt; 10000 , a i &lt; 1 e 9 2&lt;n&lt;10000,ai&lt;1e9 2<n<10000,ai<1e9 ,n,ai均为整数)

Input:

第一行一个数n 表示有几个数第二行n个数用空格隔开分别代表a1……an

Output:

请输出一个结果

Sample Input:

2
1 3

Sample Output:

2

Sample Input:

4
1 2 3 4

Sample Output:

4

题目连接

这道题目当时比赛的时候看了很久没有看出来,真是僵硬。C的结果就是等于输入数据中大小排序中间的那个数,要求输出的结果是和不是C。

AC代码:

#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <algorithm>
#include <iomanip>
#include <cctype>
#include <cmath>
#include <stack>
#include <queue>
#include <vector>
#include <cstdlib>
#include <sstream>
#include <set>
#include <map>
using namespace std;
#define mem(a,b) memset(a,b,sizeof(a))
#define pb push_back
typedef long long ll;
typedef pair<int,int> P;
const int INF = 0x3f3f3f3f;
const int maxn = 1e5+5;
const double eps = 1e-5;
const double pi = asin(1.0)*2;
const double e = 2.718281828459;

int n;
ll a[maxn];
ll ans;

int main() {
  	cin >> n;
    for (int i = 0; i < n; ++i) {
        cin >> a[i];
    }
  	sort(a, a + n);
    ans = 0;
    for (int i = 0; i < n; ++i) {
        ans += abs(a[n / 2] - a[i]);
    }
    cout << ans;
    return 0;
}