您的位置:首页 > 其它

UVa Problem Solution: 10041 - Vito's Family

2008-11-18 13:14 441 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: