递推。

先对$a[i]$进行从小到大排序。

然后计算出每个点左边所有点到这个点的距离之和$L[i]$,以及右边每个点到这个点的距离之和$R[i]$。

这两个都可以递推得到。

$L\left[ i \right] = L\left[ {i - 1} \right] + \left( {i - 1} \right)×(a\left[ i \right] - a[i - 1])$,

$R\left[ i \right] = R\left[ {i + 1} \right] + \left( {n-i} \right)×(a\left[ i+1 \right] - a[i])$。

然后寻找到$L[i]+R[i]$最小的位置,最后输出那个位置即可。

#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<iostream>
using namespace std;
typedef long long LL;
const double pi=acos(-1.0),eps=1e-; const int maxn=3e5+;
LL a[maxn],L[maxn],R[maxn],Min;
int n; int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%lld",&a[i]);
sort(a+,a++n); for(int i=;i<=n;i++) L[i]=L[i-]+(i-)*(a[i]-a[i-]);
for(int i=n;i>=;i--) R[i]=R[i+]+(n-i)*(a[i+]-a[i]); Min=; for(int i=;i<=n;i++) if(L[i]+R[i]<L[Min]+R[Min]) Min=i;
printf("%lld\n",a[Min]); return ;
}

最新文章

  1. Delphi_05_Delphi_Object_Pascal_基本语法_03
  2. Logback日志系统配置攻略
  3. iOS中XML的相关知识
  4. 关于ibatis进行物理游标分页
  5. MVC5系列——布局视图
  6. Python3 面向对象程序设计(类)
  7. Reshape the Matrix
  8. 安装 Qt 及所需 gcc 等
  9. 通过实例介绍Android App自动化测试框架--Unittest
  10. python 基础知识整理
  11. python基础3 条件判断 if嵌套
  12. 2018.5.15Html标签初学
  13. 2014年5月16至24日,杨学明老师为深圳创维RGB事业部提供两天的《软件测试管理》内训服务!
  14. 4-13 object类,继承和派生( super) ,钻石继承方法
  15. js,H5本地存储
  16. 系统信号(signal)与其他(定时器,退出清理等)
  17. FastList使用
  18. java字符串常量池——字符串==比较的一个误区
  19. No.1_NABCD模型分析
  20. eclipse export runnable jar

热门文章

  1. 【转】在iOS开发中使用FMDB
  2. .net下将富文本编辑器文本原样读入word文档
  3. wcf传输Dataset大数据量 -压缩(一)
  4. MSSQL Server查询优化方法(转)
  5. 用django创建一个简单的sns
  6. replace()随笔
  7. CentOS 设置 pptpd VPN 步骤
  8. JavaScript中的call 和apply的用途以及区别
  9. kubernetes入门之kube-proxy实现原理
  10. ASP.NET MVC之控制器传递数据到视图的四种方式