题意:

https://acm.sjtu.edu.cn/OnlineJudge/problem/1219

思路:

在经典的归并排序求逆序数对算法基础上稍作修改。

实现:

 #include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int MAXN = ;
int n, a[MAXN], tmp[MAXN];
long long cnt = ; void mergeSort(int * a, int left, int right, int * tmp)
{
if (left >= right)
return;
int mid = (left + right) / ;
mergeSort(a, left, mid, tmp);
mergeSort(a, mid + , right, tmp);
int x = left;
int y = mid + ;
int start = left;
while (x <= mid && y <= right)
{
if (a[x] < a[y])
{
tmp[start++] = a[x++];
}
else
{
int pos = upper_bound(a + x, a + mid + , * a[y]) - a;
cnt += mid - pos + ;
tmp[start++] = a[y++];
}
}
while(x <= mid)
{
tmp[start++] = a[x++];
}
while(y <= right)
{
tmp[start++] = a[y++];
}
for (int i = left; i <= right; i++)
{
a[i] = tmp[i];
}
}
int main()
{
scanf("%d", &n);
for (int i = ; i < n; i++)
{
scanf("%d", &a[i]);
}
mergeSort(a, , n - , tmp);
cout << cnt << endl;
return ;
}

最新文章

  1. HTTP API接口安全设计
  2. [moka同学摘录]SQL内联、外联的简单理解
  3. Spring + Jedis集成Redis(单例redis数据库)
  4. CSS中浏览器开发商特定的CSS属性
  5. 数据结构算法C语言实现(八)--- 3.2栈的应用举例:迷宫求解与表达式求值
  6. Android开发(三十一)——重复引用包错误Conversion to Dalvik format failed
  7. DELPHI2007 安装ACTIVEX插件的方法
  8. js实现页面跳转
  9. Golang之ring.Ring的Link操作
  10. 对exp full 和 imp full的认识
  11. document.write 向文档中写内容,包括文本、脚本、元素之类的,但是它在什么时候执行不会覆盖当前页面内容尼?
  12. Redis短结构与分片
  13. MySql截取DateTime字段的日期值
  14. 第九十二节,html5+css3移动手机端流体布局,开篇知识
  15. MapReduce执行过程
  16. kubernetes进阶(04)kubernetes的service
  17. Numpy and Matplotlib
  18. mysql DISTINCT的用法
  19. elasticsearch 镜像使用
  20. 批量输出dwg文件中的文本

热门文章

  1. Linux 内核源码中likely()和unlikely()【转】
  2. Linux时间子系统之二:表示时间的单位和结构【转】
  3. 【转载】浅谈Excel开发:一 Excel 开发概述
  4. hdu-5718 Oracle(水题)
  5. Ubuntu上命令行下卸载软件
  6. codeforces round 420 div2 补题 CF 821 A-E
  7. Centos_svn安装操作使用步骤
  8. 线程间操作无效: 从不是创建控件“xxxxxxxx”的线程访问它。
  9. CF 8D two friends
  10. Hadoop 三大调度器源码分析及编写自己的调度器