a数组共n个数,去重剩m个
离散化:
void discrete() { sort(a+1,a+n+1); for(int i=1;i<=n;i++) if(i==1||a[i]!=a[i-1]) b[++m]=a[i]; }
查询x为1到m中哪一个:
int query(int x) { return lower_bound(b+1,b+m+1,x)-b; }