Submission #1228860

#TimeUsernameProblemLanguageResultExecution timeMemory
1228860olnyfcxwpsMachine (IOI24_machine)C++20
100 / 100
30 ms444 KiB
#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
#include <map>
using namespace std;

std::vector<int> use_machine(std::vector<int> A);

vector<int> answer(const vector<int> &q, int x) {
    vector<int> a = q;
    for (auto &t : a)
        t = t ^ x;
    sort(a.begin(), a.end());
    return a;
}

vector<int> find_permutation(int n) {
    vector<int> q;
    for (int t = 0; t <= n + 2; t++) {
        if (t == 1 || t == 2 || t == 5)
            continue;
        q.push_back(t);
    }
    vector<int> a = use_machine(q);
    vector<int> a_sorted = a;
    sort(a_sorted.begin(), a_sorted.end());
    int x = 0;
    for (; x <= 255; x++) {
        vector<int> b_sorted = answer(q, x);
        if (a_sorted == b_sorted) {
            break;
        }
    }
    for (auto &t : a) {
        t = t ^ x;
    }
    vector<int> final_answer(n);
    for (int i = 0; i < n; i++) {
        int j = q[i];
        // find where j is in a
        int k = 0;
        for (; k < n && a[k] != j; k++) ;
        final_answer[k] = i;
    }
    return final_answer;
}
#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...