博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
归并排序求逆序对
阅读量:4695 次
发布时间:2019-06-09

本文共 922 字,大约阅读时间需要 3 分钟。

代码

#include
using namespace std;typedef long long ll;const int N = 2e5 + 10;int a[N],b[N];ll ans = 0;#define sc scanf#define pr printf#define rep(i,x,y) for(int i = x;i <= y;i++)#define rvp(i,x,y) for(int i = y;i >= x;i--)void merge(int l,int r){ if(l == r) return ; int m = (l+r) >> 1; merge(l,m); merge(m+1,r); int p1=l,p2 = m + 1; int cur = l; while(p1 <= m || p2 <= r) { if(p2 > r|| p1 <= m && a[p1] <= a[p2]) { b[cur++] = a[p1]; p1++; } else{ b[cur++] = a[p2]; p2++; ans += (m - p1 + 1); } } rep(i,l,r) a[i] = b[i];}int main(){ int n; while(~sc("%d",&n)) { rep(i,1,n) sc("%d",&a[i]); ans = 0; merge(1,n); rep(i,1,n) pr("%d ",a[i]); puts(""); pr("%lld\n",ans); } return 0;}

转载于:https://www.cnblogs.com/mch5201314/p/11345836.html

你可能感兴趣的文章
第二节 整型数据
查看>>
Python 序列
查看>>
JSP页面间传递参数
查看>>
VSNETcodePrint 2005 & SQL ServerPrint 2005
查看>>
java数组基本操作
查看>>
String的indexOf()用于获取字符串中某个子字符串的位置
查看>>
shell 脚本运算符
查看>>
又一道软通动力7K月薪面试题——银行业务调度系统
查看>>
Matlab画图-非常具体,非常全面
查看>>
linux网站配置文件.htaccess伪静态转换到IIS web.config中
查看>>
CodeForces 1B
查看>>
win10应用UserControl
查看>>
BZOJ4516: [Sdoi2016]生成魔咒(后缀自动机)
查看>>
查看手机已经记住的WIFI密码
查看>>
最新版IntelliJ IDEA2019 破解教程(2019.08.07-情人节更新)
查看>>
我是怎么用缠论在商品里边抢钱之二 (2019-07-12 15:10:10)
查看>>
python入门之正则表达式
查看>>
SAS学习经验总结分享:篇五-过程步的应用
查看>>
Android创建文件夹及文件并写入数据
查看>>
file的getPath getAbsolutePath和getCanonicalPath的不同
查看>>