#include "machine.h"
#include <bits/stdc++.h>
#define ll long long
#define endl "\n"
using namespace std;
std::vector<int> find_permutation(int n)
{
std::vector<int> a(n);
for (ll i = 0; i < n; i++)
a[i] = i;
if (n & 1)
{
std::vector<int> b = use_machine(a);
ll xxor = 0;
for (ll i = 0; i < n; i++) xxor ^= i ^ b[i];
for (ll i = 0; i < n; i++) b[i] ^= xxor;
return b;
}
else if ((1 << __lg(n)) == n)
{
a[n - 1] = n;
vector<int> b = use_machine(a);
ll cnt = 0;
for (ll i = 0; i < n; i++) cnt += (b[i] & n) > 0;
if (cnt > 1)
for (ll i = 0; i < n; i++) b[i] ^= n;
ll x = 0;
for (ll i = 0; i < n; i++) if ((b[i] & n) > 0)
x = b[i] ^ n;
for (ll i = 0; i < n; i++)
{
b[i] ^= x;
if (b[i] == n) b[i]--;
}
return b;
}
else
{
vector<int> b = use_machine(a), c;
for (ll x = 0; x < 256; x++)
{
c = b;
for (ll i = 0; i < n; i++) c[i] ^= x;
sort(c.begin(), c.end());
if (c == a)
{
for (ll i = 0; i < n; i++) b[i] ^= x;
return b;
}
}
}
return {0};
}
# | 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... |