#pragma warning(disable:4996)
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<vector>
#include<algorithm>
#include<iostream>
#include<time.h>
using namespace std;
const int INF = 0x3f3f3f3f;
int a[500005];
int T[500005];
__int64 sum;
void MergeSort(int *a, int x, int y,int *T)
{
if (y - x <= 1)
return ;
int m = x + (y - x) / 2;
MergeSort(a, x, m,T);
MergeSort(a, m, y,T);
int p = x, q = m, i = x;
while (p < m||q < y)
{
if (q>=y||(p<m&&a[p]<=a[q]))
{
T[i++] = a[p++];
}
else
{
T[i++] = a[q++];
sum += m - p;
}
}
for (int i = x; i <y; i++)
{
a[i] = T[i];
}
}
int main()
{
int n;
while (cin >> n, n)
{
memset(a, 0, sizeof(a));
memset(T, 0, sizeof(T));
sum = 0;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
}
MergeSort(a, 1, n + 1, T);
printf("%I64d\n", sum);
}
return 0;
}
POJ(2299)
最新推荐文章于 2022-12-15 12:59:42 发布