[Offer收割]编程练习赛46 register

Ended

Participants:142

Verdict:Time Limit Exceeded
Score:50 / 100
Submitted:2018-01-28 13:00:09

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<cstdio>
#include<cmath>
using namespace std;
const int Max=100000+50;
int a[Max],b[Max],n;
long long ans,num;
void merge_sort(int *A,int x,int y,int *T){
    if(y-x>1){
        int m=x+(y-x)/2;
        int p=x,q=m,i=x;
        merge_sort(a,x,m,b);
        merge_sort(a,m,y,b);
        while(p<m||q<y){
            if(q>=y||(p<m&&A[p]<=A[q]))
            T[i++]=A[p++];
            else
            {
                for(int j=p;j<m;j++)
                {
                    ans=ans+(A[j]^A[q]);
                }
                T[i++]=A[q++];
            }
        }
        for(int  i=x;i<y;i++)
        A[i]=T[i];
    }
    return ;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX