Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

int64

Posted by achilles at 2005-12-20 15:06:17 on Problem 2299
In Reply To:郁闷,总是WA!! Posted by:liuyuyangfoam at 2005-12-20 14:27:52
> 	//计算逆序数
> 	private static int solve(int[] array,int n) {
> 		int[] temp = new int[n];			
> 		return mergeSort(array,temp,0,n);
> 	}
> 	// 包括low,不包括high.
> 	private static int mergeSort(int[] src, int[] dest, int low, int high) {		
> 		int length = high - low;		
> 		if (length==1) return 0;		
> 		int mid = (low + high) >> 1;
> 		int c1 = mergeSort(src, dest, low, mid);
> 		int c2 = mergeSort(src, dest, mid, high);
> 		if (src[mid-1]<=src[mid]) {			
> 			return c1+c2;
> 		}
> 		int c3 = 0;		
> 		int i=low, p = low, q = mid;
> 		while(p<mid&&q<high) {
> 			if (src[p]<=src[q]) {
> 				dest[i++] = src[p++];
> 				c3 += (q-mid); 
> 			}				
> 			else {
> 				dest[i++] = src[q++];	
> 				//c3 += (mid-p); 
> 			}
> 		}
> 		while(p<mid) {
> 			dest[i++] = src[p++];
> 			c3 += (q-mid); 			
> 		}
> 		while(q<high) {
> 			dest[i++] = src[q++];			
> 		}
> 		System.arraycopy(dest, low, src, low, length);
> 		
> 		return c1+c2+c3;
> 	}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator