1 去重
sort(vals + 1, vals + m + 1);
cnt = unique(vals + 1, vals + m + 1) - vals - 1;/* cnt表示去重之后还剩下多少个元素,去重之前得先排序*/
int z = lower_bound(vals + 1, vals + cnt + 1, a[i].z) - vals;/* 表示在数组vals,从1到cnt的范围内,*/
/*二分找到第一个大于或等于a[i].z的数的地址,未找到返回end,通过减去起始地址,得到下标*/