Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_DEPRECATE
- #include <iostream>
- #include <vector>
- #include <string>
- #include <map>
- #include <set>
- #include <algorithm>
- using namespace std;
- long long cnt;
- vector<int> a, c;
- void mergesort(int l, int r)
- {
- int mid;
- if (l < r)
- {
- mid = (l + r) / 2;
- mergesort(l, mid);
- mergesort(mid + 1, r);
- merge(l, r, mid);
- }
- return;
- }
- void merge(int l, int r, int m)
- {
- long long i = l , j = m + 1, k = l;
- while (i <= m && j <= r)
- {
- if (a[i] <= a[j])
- {
- c[k++] = a[i++];
- }
- else
- {
- c[k++] = a[j++];
- cnt += (long long)m - i + 1LL;
- }
- }
- while (i <= m)
- {
- c[k++] = a[i++];
- }
- while (j <= r)
- {
- c[k++] = a[j++];
- }
- for (i = l; i < k; i++)
- {
- a[i] = c[i];
- }
- }
- int main() {
- freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);
- int n;
- cin >> n;
- cnt = 0;
- a.resize(n);
- c.resize(n);
- for (int i = 0; i < n; i++)
- {
- cin >> a[i];
- }
- mergesort(0, n - 1);
- cout << cnt;
- }
Advertisement
Add Comment
Please, Sign In to add comment