1 solutions
-
3
#include<bits/stdc++.h> using namespace std; long long a[114514], r[114514]; long long ans = 0; void mosort (long long s, long long t) { if(s == t) return ; long long mid = (s + t) / 2; mosort(s, mid); mosort(mid + 1, t); int i = s, j = mid + 1, k = s; while(i <= mid && j <= t) { if(a[i] <= a[j]) { r[k] = a[i]; k++; i++; } else { r[k] = a[j]; k++; j++; ans+=mid-i+1; } } while(i <= mid) { r[k] = a[i]; k++; i++; } while(j <= t) { r[k] = a[j]; k++; j++; } for(int i = s; i <= t; i++) a[i] = r[i]; } int main() { int n; cin >> n; for(int i = 1; i <= n; i++) { cin >> a[i]; } mosort(1,n); cout << ans; return 0; }
- 1
Information
- ID
- 722
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 5
- Tags
- # Submissions
- 38
- Accepted
- 17
- Uploaded By