Vito should live on the street which is the median of his relatives.
Code:
- /*************************************************************************
- * Copyright (C) 2008 by liukaipeng *
- * liukaipeng at gmail dot com *
- *************************************************************************/
- /* @JUDGE_ID 00000 10041 C++ "Vito's Family" */
- #include <algorithm>
- #include <deque>
- #include <fstream>
- #include <iostream>
- #include <list>
- #include <map>
- #include <queue>
- #include <set>
- #include <stack>
- #include <string>
- #include <vector>
- using namespace std;
- int min_dist_sum(int *first, int *last)
- {
- int *median = first + (last - first) / 2;
- nth_element(first, median, last);
- int sum = 0;
- for (; first < median; ++first)
- sum += *median - *first;
- for (; first < last; ++first)
- sum += *first - *median;
- return sum;
- }
- int main(int argc, char *argv[])
- {
- #ifndef ONLINE_JUDGE
- filebuf in, out;
- cin.rdbuf(in.open((string(argv[0]) + ".in").c_str(), ios_base::in));
- cout.rdbuf(out.open((string(argv[0]) + ".out").c_str(), ios_base::out));
- #endif
- int ncases;
- cin >> ncases;
- while (ncases-- > 0) {
- int r;
- cin >> r;
- int s[500];
- for (int i = 0; i < r; ++i)
- cin >> s[i];
- cout << min_dist_sum(s, s + r) << '/n';
- }
- return 0;
- }