- 把原来的数组a复制一份拷贝b
- 用sort先把数组a排序
- 用unique消除a里面重复的元素
- 对于b中的每一个元素,用lower_bound找到它在a中的位置,也就是离散化之后的编号。
- 没了。
#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <cctype> #include <algorithm> #include <queue> #include <deque> #include <queue> #include <list> #include <map> #include <set> #include <vector> #include <utility> #include <functional> #include <fstream> #include <iomanip> #include <sstream> #include <numeric> #include <cassert> #include <ctime> #include <iterator> const int INF = 0x3f3f3f3f; ][] = {{-,},{,},{,-},{,},{-,-},{-,},{,-},{,}}; using namespace std; int main(void) { ] = {, , , , , }, b[]; ; i < ; ++i) b[i] = a[i]; sort(a, a+); ) - a; ;i < ; ++i) b[i] = lower_bound(a, a+len, b[i]) - a + ; ; i < ; ++i) printf("%d ", b[i]); printf("\n"); ; }
嗨!中村。