A long time ago I saw lrj using this technique. Today I have verified it. B is the table below. I know the order of array a while ensuring that array a remains unchanged.
The Code is as follows:
#include <cstring>#include <vector>#include <list>#include <map>#include <set>#include <deque>#include <stack>#include <bitset>#include <algorithm>#include <functional>#include <numeric>#include <utility>#include <sstream>#include <iostream>#include <iomanip>#include <cstdio>#include <cmath>#include <cstdlib>#include <ctime>#include <memory.h>#include <cassert>using namespace std;int a[10000];int b[10000];bool cmp(int c, int b){ return a[c] < a[b];}int main(){ int n; scanf("%d",&n); for(int i = 1;i <= n;i ++) scanf("%d",&a[i]); for(int j = 1;j <= n;j ++) b[j] = j ; sort(b+1,b+n+1,cmp); for(int j = 1;j <= n;j ++) printf("%d ",b[j]); printf("\n"); return 0 ; }
Sort the subscript