#include #include typedef long long int int64; int cmp(const void *a,const void *b){ return *(int *)a-*(int *)b; } int compress(int *a,const int n){ qsort(a,n,sizeof(int),cmp); int i=0; int j=0; while(i1){ int m=(l+r)/2; if(cmp(za+m,&v)<=0){ l=m; } else { r=m; } } return l; } void add(int64 *bit,int index,int64 v){ int n=bit[0]; for(int i=index;i<=n;i+=i&-i) bit[i]+=v; } int64 sum(int64 *bit,int index){ int64 res=0; for(int i=index;i>0;i-=i&-i) res+=bit[i]; return res; } int search(int64 *bit,int64 x){ const int n=bit[0]; int k=1; while(2*k0;k>>=1){ if(y+k<=n && bit[y+k]