Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <cstring>#include <cstdio>using namespace std;int aa;char buf[1<<15],*S=buf,*H=buf,ch;char getc(){return S==H&&(H=(S=buf)+fread(buf,1,1<<15,stdin),S==H)?0:*S++;}int F(){while(ch=getc(),ch<'0'||ch>'9');aa=ch^'0';while(ch=getc()^'0',ch>=0&&ch<=9)aa=(aa<<3)+(aa<<1)+ch;return aa;}int cnt = 0;void splitMerge(int A[], int l, int r, int B[]){if (r <= l) return;int mid = (l + r) >> 1;splitMerge(A, l, mid, B);splitMerge(A, mid+1, r, B);int i = l;int j = mid+1;for (int k = l; k <= r; ++k) {if (i <= mid && (j > r || A[i] <= A[j]))B[k] = A[i++];