非常容易过的一道题,不知道有没有更好的做法,觉得一定有。
#include <iostream>
#include <sstream>
#include <fstream>
#include <string>
#include <vector>
#include <queue>
#include <map>
#include <set>
#include <stack>
#include <assert.h>
#include <algorithm>
#include <math.h>
#include <ctime>
#include <functional>
#include <string.h>
#include <stdio.h>
#include <numeric>
#include <float.h>
using namespace std;
int main() {
int TC = 0; cin >> TC;
for (int tc = 0; tc < TC; tc++) {
int minLen = 0x7fffffff;
int relativeNum = 0; cin >> relativeNum;
map<int, int> lives;
for (int i = 0; i < relativeNum; i++) {
int pos = 0; cin >> pos;
lives[pos]++;
}
for (map<int, int>::iterator iter1 = lives.begin(); iter1 != lives.end(); iter1++) {
int totalLen = 0;
for (map<int, int>::iterator iter2 = lives.begin(); iter2 != lives.end(); iter2++) {
totalLen += abs(iter1->first - iter2->first) * iter2->second;
}
minLen = min(minLen, totalLen);
}
cout << minLen << endl;
}
return 0;
}