Submission #1322299

#TimeUsernameProblemLanguageResultExecution timeMemory
1322299kasamchiMechanical Doll (IOI18_doll)C++20
9 / 100
41 ms10296 KiB
#include "doll.h"
#include <bits/stdc++.h>
using namespace std;

void create_circuit(int M, vector<int> A) {
    int N = A.size();
    vector<int> C = {1, -1};

    int b = 32 - __builtin_clz(N - 1);
    int K = (1 << b);
    
    vector<int> X, Y;
    for (int i = 0; i < K / 2 - 1; i++) {
        X.push_back(-(i + 1) * 2);
        Y.push_back(-(i + 1) * 2 - 1);
    }
    for (int i = K / 2 - 1; i < K - 1; i++) {
        X.push_back(1);
        Y.push_back(1);
    }
    Y[K - 2] = 0;

    vector<int> v;
    for (int i = 0; i < K; i++) {
        bitset<32> bs(i);
        for (int i = 0; i < b / 2; i++) {
            bool t = bs[i];
            bs[i] = bs[b - i - 1];
            bs[b - i - 1] = t;
        }
        v.push_back(bs.to_ulong());
    }

    vector<int> u(K);
    for (int i = 0; i < K; i++) {
        u[v[i]] = i;
    }

    for (int i = K - 2; i >= N - 1; i--) {
        Y[K / 2 - 1 + u[i] / 2] = -1;
    }

    answer(C, X, Y);
}
#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...