#include<vector>
using namespace std;
vector<int> use_machine(vector<int> a);
vector<int> find_permutation_odd(int n){
vector<int> inp(n);
int tmp = 0;
for(int i = 0; i < n; i++){
inp[i] = i;
tmp ^= i;
}
vector<int> out = use_machine(inp);
for(int i = 0; i < n; i++){
tmp ^= out[i];
}
for(int i = 0; i < n; i++){
out[i] ^= tmp;
}
return out;
}
vector<int> find_permutation_even(int n){
vector<int> inp(n);
for(int i = 0; i < n; i++){
inp[i] = i;
}
inp[n - 1] += 3;
int des_sum = 0;
for(int i = 0; i < n; i++){
des_sum += inp[n - 1] ^ inp[i];
}
vector<int> out = use_machine(inp);
int act_sum = 0;
int x;
for(int i = 0; i < n; i++){
act_sum = 0;
for(int j = 0; j < n; j++) act_sum += out[i] ^ out[j];
if(act_sum == des_sum){
x = (n + 2) ^ out[i];
break;
}
}
for(int i = 0; i < n; i++){
out[i] ^= x;
if(out[i] == n + 2) out[i] -= 3;
}
return out;
}
vector<int> find_permutation(int n){
if(n % 2) return find_permutation_odd(n);
else return find_permutation_even(n);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |