level 2
VictorXie
楼主
void ms(int l, int r)
{
if (r - l > 1)
{
int mid = (l + r) >> 1;
int p = l;
int q = mid;
int i = l;
ms(l,mid);
ms(mid,r);
while (p < mid || q < r)
{
if (q >= r || (p < mid && a[p] <= a[q])) b[i++] = a[p++];
else
{
b[i++] = a[q++];
cnt += mid - p;
}
}
for (i = l ; i < r ; ++ i)
a[i] = b[i];
}
}
2015年01月31日 17点01分
1
{
if (r - l > 1)
{
int mid = (l + r) >> 1;
int p = l;
int q = mid;
int i = l;
ms(l,mid);
ms(mid,r);
while (p < mid || q < r)
{
if (q >= r || (p < mid && a[p] <= a[q])) b[i++] = a[p++];
else
{
b[i++] = a[q++];
cnt += mid - p;
}
}
for (i = l ; i < r ; ++ i)
a[i] = b[i];
}
}