<pre>
#define n 1000

int TestOracle2(int *A, int *B)

{

int i, j, D[n];

//init

for (i = 0; i < n; i++) D[i] = -1;

// B is ordered

for (i = 0; i < n; i++) {  for (j = i+1; j < n; j++) {if (B[j] < B[i]) {retun (0);}}}

// B is a permutation of A

for (i = 0; i < n; i++) {  for (j = 0; j < n; j++) {if ((A[i] == B[j]) && (D[j] == -1)) {C[i][j] = 1; break;}

for (i = 0; i < n; i++) {if (D[i] == -1) return (0);}

// B ok

return (1);

}
</pre>