Submission #1181704

#TimeUsernameProblemLanguageResultExecution timeMemory
1181704PAndaSMachine (IOI24_machine)C++20
10 / 100
3 ms432 KiB
#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 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...