Submission #1170259

#TimeUsernameProblemLanguageResultExecution timeMemory
1170259madamadam3Machine (IOI24_machine)C++20
10 / 100
48 ms476 KiB
#include "machine.h" #include <bits/stdc++.h> using namespace std; int n; bool validate(const vector<int>& candidate, const vector<int>& S) { vector<int> sortedCandidate = candidate, sortedS = S; sort(sortedCandidate.begin(), sortedCandidate.end()); sort(sortedS.begin(), sortedS.end()); return sortedCandidate == sortedS; } vector<int> find_permutation(int N) { n = N; vector<int> A(N), S(N); if (N % 2 == 1) { for (int i = 0; i < N; i++) { A[i] = i + 1; S[i] = i + 1; } } else { for (int i = 0; i < N - 2; i++) { A[i] = i; S[i] = i; } A[N - 2] = N + 1; A[N - 1] = N + 2; S[N - 2] = N + 1; S[N - 1] = N + 2; } vector<int> B = use_machine(A); int trueX = -1; vector<int> candidateArr(N); for (int x = 0; x < 256; x++) { for (int i = 0; i < N; i++) { candidateArr[i] = B[i] ^ x; } if (validate(candidateArr, S)) { trueX = x; break; } } if (trueX < 0) return vector<int>(); for (int i = 0; i < N; i++) { candidateArr[i] = B[i] ^ trueX; } unordered_map<int, int> pos; for (int j = 0; j < N; j++) { pos[A[j]] = j; } vector<int> P(N); for (int i = 0; i < N; i++) { P[i] = pos[candidateArr[i]]; } return P; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...