제출 #1290929

#제출 시각아이디문제언어결과실행 시간메모리
1290929Hamed_Ghaffari"The Lyuboyn" code (IZhO19_lyuboyn)C++20
100 / 100
125 ms18856 KiB
#include <bits/stdc++.h>
using namespace std;

int n, k, t, s;
string st;

vector<int> gray_code(int n) {
    if(n==1) return {0, 1};
    vector<int> A = gray_code(n-1), B = A;
    while(!B.empty()) {
        A.push_back(B.back()^(1<<(n-1)));
        B.pop_back();
    }
    return A;
}

vector<int> solve(int n, int k) {
    if(n==k+1) {
        vector<int> A = gray_code(n);
        for(int i=1; i<A.size(); i+=2) A[i] = A[i]^((1<<n)-1);
        return A;
    }
    vector<int> A = solve(n-1, k), B = A;
    while(!B.empty()) {
        A.push_back(B.back()^((1<<n)-1)^((1<<(n-k))-1));
        B.pop_back();
    }
    return A;
}

int32_t main() {
    cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0);
    cin >> n >> k >> t >> st;
    for(int i=0; i<n; i++) s ^= (st[i]-'0')<<i;
    if(k%2==0) {
        cout << "-1\n";
        return 0;
    }
    vector<int> ans = solve(n, k);
    for(int &i : ans) i ^= s;
    cout << ans.size() << '\n';
    for(int i : ans) {
        for(int j=0; j<n; j++)
            cout << (i>>j&1);
        cout << '\n';
    }
    return 0;
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...