POJ 2299 Ultra-QuickSort【归并排序】
来源:互联网 发布:appserv是什么软件 编辑:程序博客网 时间:2024/06/14 07:59
Ultra-QuickSort
Time Limit: 7000MS Memory Limit: 65536K
Total Submissions: 64050 Accepted: 23920
Description
In this problem, you have to analyze a particular sorting algorithm. The algorithm processes a sequence of n distinct integers by swapping two adjacent sequence elements until the sequence is sorted in ascending order. For the input sequence
9 1 0 5 4 ,
Ultra-QuickSort produces the output
0 1 4 5 9 .
Your task is to determine how many swap operations Ultra-QuickSort needs to perform in order to sort a given input sequence.
Input
The input contains several test cases. Every test case begins with a line that contains a single integer n < 500,000 – the length of the input sequence. Each of the the following n lines contains a single integer 0 ≤ a[i] ≤ 999,999,999, the i-th input sequence element. Input is terminated by a sequence of length n = 0. This sequence must not be processed.
Output
For every input sequence, your program prints a single line containing an integer number op, the minimum number of swap operations necessary to sort the given input sequence.
Sample Input
5
9
1
0
5
4
3
1
2
3
0
Sample Output
6
0
Source
Waterloo local 2005.02.05
1297ms
#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int maxn = 5e5 + 5;#define LL long long intint n, a[maxn], t[maxn];LL ans;void Merg_Sort(int x, int y){ if (y - x <= 1) return; int mid = x + (y - x) / 2; Merg_Sort(x, mid); Merg_Sort(mid, y); int p = x; int q = mid; int i = x; while (p < mid || q < y) { if (q >= y || (p < mid&&a[p] <= a[q])) { t[i++] = a[p++]; } else { if (p < mid) ans += (mid - p); t[i++] = a[q++]; } } for (i = x; i < y; i++) { a[i] = t[i]; }}int main(){ while (cin >> n&&n) { memset(a, 0, sizeof(a)); memset(t, 0, sizeof(t)); for (int i = 0; i < n; i++) { cin >> a[i]; } ans = 0; Merg_Sort(0, n); cout << ans << endl; } return 0;}
- POJ 2299 Ultra-QuickSort(归并排序)
- POJ 2299 Ultra-QuickSort 归并排序
- POJ - 2299 Ultra-QuickSort【归并排序】
- POJ 2299 Ultra-QuickSort(归并排序)
- Ultra-QuickSort poj 2299 归并排序
- POJ - 2299 Ultra-QuickSort (归并排序)
- poj 2299Ultra-QuickSort(归并排序)
- poj 2299 Ultra-QuickSort 归并排序解法
- poj 2299 Ultra-QuickSort (归并排序模板)
- POJ 2299 Ultra-QuickSort (归并排序)
- POJ 2299 Ultra-QuickSort(归并排序)
- POJ 2299 Ultra-QuickSort 归并排序
- poj 2299 Ultra-QuickSort(归并排序)
- POJ 2299 Ultra-QuickSort 归并排序
- POJ 2299 Ultra-QuickSort [归并排序做法]
- POJ 2299 Ultra-QuickSort (归并排序)
- POJ-----2299---Ultra-QuickSort---归并排序
- Ultra-QuickSort POJ 2299 归并排序算法
- linux发不出邮件 重新安装mail服务
- dubbo自定义配置文件
- CAS Server集成QQ登录、新浪微博登录源码及配置文件
- activiti之流程变量值Business_key
- 在jquery.ajax()的回调函数中使用发送请求时的data中的参数
- POJ 2299 Ultra-QuickSort【归并排序】
- 消除ScrollView 惯性
- parted分区工具使用
- 简单进度条的实现
- static和extern简单使用(要使用一个东西,先了解其作用)
- 文件aidl的使用方法
- something useful about cmd
- 使用大于 16MB 的闪存时, Zynq 和 QSPI 的复位要求
- 关于java中输出流flush()方法