hiho week 39 register

Ended

Participants:2159

Verdict:Wrong Answer
Score:40 / 100
Submitted:2015-04-03 20:18:58

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
const int N = 100000;
long long total;//
long *swap_space= new long[N];//
void merge(long a[], long begin, long mid,long end){
    long i = begin;
    long j = mid + 1;
    long k = begin;
    while(i <= mid && j <= end){
        if(a[i] < a[j]){
            swap_space[k++] = a[i++];
        }else{
            swap_space[k++] = a[j++];
            total += (mid - i + 1);//total is the reverse count
        }
    }
    while(i <= mid)
        swap_space[k++] = a[i++];
    while(j <= end)
        swap_space[k++] = a[j++];
    for(i = begin; i <= end; i++){
        a[i] = swap_space[i];
    }
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX