[编程题] 疯狂队列
来源:互联网 发布:win10 10核优化 编辑:程序博客网 时间:2024/05/22 22:21
小易老师是非常严厉的,它会要求所有学生在进入教室前都排成一列,并且他要求学生按照身高不递减的顺序排列。有一次,n个学生在列队的时候,小易老师正好去卫生间了。学生们终于有机会反击了,于是学生们决定来一次疯狂的队列,他们定义一个队列的疯狂值为每对相邻排列学生身高差的绝对值总和。由于按照身高顺序排列的队列的疯狂值是最小的,他们当然决定按照疯狂值最大的顺序来进行列队。现在给出n个学生的身高,请计算出这些学生列队的最大可能的疯狂值。小易老师回来一定会气得半死。
输入描述:
输入包括两行,第一行一个整数n(1 ≤ n ≤ 50),表示学生的人数
第二行为n个整数h[i](1 ≤ h[i] ≤ 1000),表示每个学生的身高
输出描述:
输出一个整数,表示n个学生列队可以获得的最大的疯狂值。
如样例所示:
当队列排列顺序是: 25-10-40-5-25, 身高差绝对值的总和为15+30+35+20=100。
这是最大的疯狂值了。
输入例子1:
5
5 10 25 40 25
输出例子1:
100
#include <bits/stdc++.h>using namespace std;int h[55];int n;int main() { cin >> n; for(int i = 0; i < n; i++) cin >> h[i]; sort(h, h + n); int tmp, ans = 0, ans1 = 0, ans2 = 0; if(n % 2 == 0) { tmp = n / 2; for(int i = 0; i < tmp; i++) { ans += 2 * (h[tmp + i] - h[i]); } ans += h[tmp - 1] - h[tmp]; cout << ans << endl; return 0; } else { tmp = n / 2; for(int i = 0; i < tmp; i++) { ans1 += 2 * (h[tmp + 1 + i] - h[i]); ans2 += 2 * (h[tmp + 1 + i] - h[i]); } ans1 += -h[tmp] + h[tmp - 1]; ans2 += h[n] - h[n + 1]; cout << max(ans1, ans2) << endl; return 0; } return 0;}
阅读全文
0 0
- [编程题] 疯狂队列
- [编程题] 疯狂队列
- [编程题] 疯狂队列
- 《网易编程题》疯狂队列
- 网易编程题 疯狂队列
- 疯狂数队列 编程 python
- 2018网易内推编程题 疯狂队列
- 网易2017内推 [编程题]疯狂队列
- 网易2018校招内推编程题_疯狂队列
- 2018网易校招编程题(7)疯狂队列
- 2018网易内推编程题 疯狂队列 C++
- 网易2018校招内推编程题集合:疯狂队列 [python]
- 【算法题】疯狂的队列
- 疯狂队列
- 疯狂队列
- 疯狂队列
- 网易笔试题-疯狂的队列
- 疯狂队列(交错队列)
- js字符串处理
- C# WinForm发送Email邮件
- First head 设计模式学习c++实现------模板方法模式(Template method pattern)
- oracle中创建序列以及实际应用
- 树状数组--转
- [编程题] 疯狂队列
- Docker教程(二) Docker环境安装
- 杂七杂八话LTE(四十五):初识VoLTE
- 通过SQL语句(alter table)来增加、删除、修改字段
- R语言2——时间序列分析
- 【CUGBACM15级BC第19场 A】hdu 5108 Alexandra and Prime Numbers
- MPP_Develop_Reference
- java事务全解析(五)--Template模式
- 字体菜单栏图标过小时,屏幕密度的修改方法