Poj 2299 Ultra-QuickSort (归排求逆序数)
2015-08-07 09:20
447 查看
Ultra-QuickSort
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
Sample Output
Time Limit: 7000MS | Memory Limit: 65536K | |
Total Submissions: 48371 | Accepted: 17657 |
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 因为没用long long 而WA。。#include <iostream> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> #include <ctype.h> #define LL long long #include<algorithm> LL a[500010],b[500010],ans,n; using namespace std; void he(LL s,LL mid,LL e) { LL i=s,j=mid+1,k=0; while(i<=mid&&j<=e) { if(a[i]>=a[j])//逆序数的生成只可能在a[i]>=a[j]的情况下,切有多少a[i]在a[j]前,就有多少逆序对<span id="transmark"></span> { ans+=(mid-i+1); b[k++]=a[j++]; } else { b[k++]=a[i++]; } } while(i<=mid) b[k++]=a[i++]; while(j<=e) b[k++]=a[j++]; for(i=s,k=0;i<=e;k++,i++) a[i]=b[k]; } void mer(LL s,LL e) { if(s<e)//分为两堆时,不可以有=,否则没意义。 { LL mid=(s+e)/2; mer(s,mid); mer(mid+1,e); he(s,mid,e); } } int main() { LL n,m,i,j,k,s; while(scanf("%lld",&n)!=EOF&&n) { ans=0; for(i=0;i<n;i++) { scanf("%lld",&a[i]); } mer(0,n-1); printf("%lld\n",ans); } }
相关文章推荐
- leetcode_Implement Queue using Stacks
- 基于mysql的程序抛异常 Unable to find the requested .Net Framework Data Provider. It may not be installed
- Android API Guides – Introduction to Android
- bluetooth发展(五岁以下儿童)------蓝牙功能测试(一个)
- iOS UI07_界面传值
- [IOS]今天开始学UI---UISegmentedControl&&UIStepper
- iOS UI07_导航视图控制器
- Android应用UI架构
- EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(九)
- 【LeetCode-面试算法经典-Java实现】【096-Unique Binary Search Trees(唯一二叉搜索树)】
- UE4 Particle Systems
- UE3粒子系统参考指南
- OpenGL ES Programming Guide for iOS
- iOS devices Metal Programming Guide
- POJ 3094 Quicksum 难度:0
- [IOS]今天开始学UI---NSAttributedString 属性字
- UIView 中常见的方法总结
- IOS--UI--UIView文件解读
- 如何移动应用了CGAFFINETRANSFORM效果的UIVIEW
- UIVIEW 的旋转与缩放以及同时应用两种效果(二)