# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1172197 | nicolo_010 | Machine (IOI24_machine) | C++20 | 0 ms | 0 KiB |
#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
#define rep(i, k, n) for (int i = k; i < n; i++)
#define print(vec) for (auto x : vec) cout << x << " "; cout << "\n"
#define input(vec) for (int i = 0; i < vec.size(); i++) cin >> vec[i]
template<typename T>
using v = vector<T>;
template<typename T>
using pq = priority_queue<T, vector<T>, greater<T>>;
const int MOD = 1e9+7;
v<int> p = {0, 4, 3, 1, 2};
int X = 8;
v<int> use_machine(v<int> A) {
v<int> B(A.size());
rep(i, 0, A.size()) {
B[i] = A[p[i]] ^ X;
}
return B;
}
v<int> find_permutation(int N) {
int n = N;
v<int> a(n, 0);
v<int> aux = use_machine(a);
int x = aux[0];
v<int> ans(n);
map<int, int> mp;
rep(i, 0, n) {
ans[i] = i;
mp[i^x] = i;
}
//print(ans);
ans = use_machine(ans);
//print(ans);
v<int> toreturn(n);
rep(i, 0, n) {
toreturn[i] = mp[ans[i]];
}
return toreturn;
}