poj2299—Ultra-QuickSort
来源:互联网 发布:nodejs 调用php接口 编辑:程序博客网 时间:2024/05/18 15:29
Ultra-QuickSort
Time Limit:7000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u
Submit
Status
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
Time Limit:7000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u
Submit
Status
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
题目大意:交换相邻的两个数,求最小的操作数使该数组变成上升数组
思路:用归并排序求逆序数。
#include <iostream>#include <cstdio>#include <cstring>using namespace std;typedef __int64 LL ;LL a[500005],vis[500005];LL ans;void sort2(LL a[], int begin, int mid, int end){ int i = begin; int j = mid + 1; int k = begin; while (i <= mid && j <= end) { if(a[i] <= a[j]) { vis[k++] = a[i++]; } else { vis[k++] = a[j++]; ans += mid - i +1; } } while(i <= mid) { vis[k++] = a[i++]; } while (j <= end) { vis[k++] = a[j++]; } for(i = begin; i <= end; i++) { a[i] = vis[i]; }}void sort1(LL a[],int begin, int end){ if(begin != end){ int mid = (begin + end)/2; sort1(a,begin,mid); sort1(a,mid+1,end); sort2(a,begin, mid, end);}}int main(){ int n,i;while (scanf("%d",&n)&&n){ans = 0; for(i = 0; i < n;i++){ scanf("%d",&a[i]);}sort1(a,0,n-1);printf("%I64d\n",ans);} return 0;}
0 0
- poj2299—Ultra-QuickSort
- poj2299——Ultra-QuickSort
- POJ2299——Ultra-QuickSort
- POJ2299——Ultra-QuickSort
- poj2299——Ultra-QuickSort
- poj2299 Ultra-QuickSort
- (POJ2299)Ultra-QuickSort
- poj2299 Ultra-QuickSort
- poj2299 Ultra-QuickSort
- POJ2299-Ultra-QuickSort
- POJ2299:Ultra-QuickSort
- poj2299 Ultra-QuickSort
- poj2299 Ultra-QuickSort
- poj2299 Ultra-QuickSort
- poj2299--Ultra-QuickSort
- POJ2299 Ultra-QuickSort
- POJ2299 Ultra-QuickSort
- poj2299 Ultra-QuickSort
- 关于软件版本号的问题 软件版本号命名规则
- 程序员生存定律-打造属于自己的稀缺性
- POJ 1703 Find them, Catch them
- 子串和
- js时间格式化
- poj2299—Ultra-QuickSort
- QT,QT/E,Qtopia,qt creator的联系与区别
- Introduction to FXML
- 网络编程
- PKU的Bridging Signals
- GET方法和POST方法的区别
- 开心的小明
- Android SDK下载和更新失败的解决方法
- 设计模式-关于模式的一些很基本的知识点