1 solutions
-
0
C++ :
#include<iostream> using namespace std; const int N = 3e5+5; int n; int a[N], b[N]; long long ans = 0; void merge(int l, int r){ int mid = l + r >> 1; if(l>=r) return; merge(l, mid); merge(mid+1, r); int i = l, j = mid + 1, k = 0; while(i<=mid && j<=r) { if(a[i]>a[j]) { ans += mid - i + 1; b[++k] = a[j++]; } else b[++k] = a[i++]; } while(i<=mid) b[++k] = a[i++]; while(j<=r) b[++k] = a[j++]; for(int i=l;i<=r;i++) a[i] = b[i-l+1]; } int main(){ cin>>n; for(int i=n;i;i--) cin>>a[i]; merge(1, n); cout<<ans; return 0; }
- 1
Information
- ID
- 121
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By