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;
}
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;
}
相关文章推荐
- UVA - 10041 Vito's Family 求中位数
- UVA - 10041 Vito's Family(贪心)
- uva 10041 Vito's Family_贪心
- UVA 10041 Vito's Family 求中位数 模拟
- uva - 10041 - Vito's Family(数学)
- uva10041 - Vito's Family(求中位数)
- UVa 10041 Vito's Family (中位数&快速选择)
- UVa Problem Solution: 10010 - Where's Waldorf
- UVa Problem 10041 Vito’s Family (Vito 家族)
- 第K小数 uva 10041 - Vito's Family poj 2388 Who's in the Middle
- Vito's Family
- UVa 10041 - Vito's Family
- uva 10041 Vito's Family
- UVA 10026 Shoemaker's Problem 鞋匠的难题 贪心+排序
- 排序 UVA 10041 Vito's Family
- Shoemaker's Problem - UVa 10026 贪心
- UVa 10041 Vito's Family (median selection)
- uva 10041 Vito's Family(检索)
- uva10041-Vito‘s family(全部枚举)
- UVA10041 - Vito's family