1 solutions

  • 0
    @ 2024-12-11 0:33:47

    C++ :

    #include <iostream>
    #include <cstdio>
    using namespace std;
    
    const int N = 10010;
    int n, a[N], q[N], cnt;
    
    void msort(int l, int r) {
    	if (l == r) return;
    	
    	int mid = l + r >> 1;
    	int i = l, j = mid + 1, k = l;
    	
    	msort(i, mid);
    	msort(j, r);
    	
    	while (i <= mid && j <= r) {
    		if (a[i] <= a[j]) {
    			q[k++] = a[i++];
    		}
    		else {
    			q[k++] = a[j++];
    			cnt += mid - i + 1;
    		}
    	}
    	
    	while (i <= mid) {
    		q[k++] = a[i++];
    	}
    	while (j <= r) {
    		q[k++] = a[j++];
    	}
    	
    	for (int i = l; i <= r; i ++) {
    		a[i] = q[i];
    	}	
    }
    
    int main() {
    	cin >> n;
    	for (int i = 1; i <= n; i ++) cin >> a[i];
    	
    	msort(1, n);
    	
    	cout << cnt;
    
    	return 0;
    }
    
    • 1

    Information

    ID
    724
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By