hiho week 39 register

Ended

Participants:2159

Verdict:Accepted
Score:100 / 100
Submitted:2015-04-01 13:03:26

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>
using namespace std;
int boat[100000];
int copy1[100000];
void merge2(int begin1, int begin2, int end, long long & count){
    int i = 0, a = begin1, b = begin2;
    while(i < end - begin1) {
        if(a == begin2)
            copy1[i] = boat[b], ++b;
        else if(b == end)
            copy1[i] = boat[a], ++a;
        else{
            if(boat[b] < boat[a])
                copy1[i] = boat[b], ++b, count += (begin2 - a);
            else
                copy1[i] = boat[a], ++a;
        }
        ++i;
    }
    i = 0, a = begin1;
    while(i < end - begin1) {
        boat[a++] = copy1[i++];
    }
    return;
}
void merge(int begin, int end, long long &count){
    if(end <= begin + 1) return;
    merge(begin, begin + (end - begin) / 2, count);
    merge(begin + (end - begin) / 2, end, count);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX