poj 1804 Brainman

来源:互联网 发布:forespider软件 编辑:程序博客网 时间:2024/05/29 14:35
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;typedef long long LL;const int MAXN = 1010;int a[MAXN], b[MAXN];LL sum;void Merge(int low, int mid, int high){    int i = low, j = mid+1, k = low;    while(i <= mid && j <= high)    {        if(a[i] <= a[j])            b[k++] = a[i++];        else            b[k++] = a[j++], sum += (mid - i + 1);    }    while(i <= mid)        b[k++] = a[i++];    while(j <= high)        b[k++] = a[j++];    for(int i = low; i <= high; ++i)        a[i] = b[i];    return ;}void Merge_Sort(int low, int high){    if(low == high)        return ;    if(low < high)    {        int mid = (low + high) >> 1;        Merge_Sort(low, mid);        Merge_Sort(mid+1, high);        Merge(low, mid, high);    }    return ;}int main(){    int T, kcase = 1;    int n;    scanf("%d", &T);    while(T--)    {        scanf("%d", &n);        for(int i = 0; i < n; ++i)            scanf("%d", &a[i]);        sum = 0;        Merge_Sort(0, n-1);        printf("Scenario #%d:\n%I64d\n\n", kcase++,sum);    }    return 0;}

0 0
原创粉丝点击