답안 #151310

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
151310 2019-09-02T12:35:27 Z theboatman "The Lyuboyn" code (IZhO19_lyuboyn) C++17
3 / 100
69 ms 7528 KB
#include <bits/stdc++.h>

#define y1 theboatman
#define make_struct(args...) {args}

using namespace std;

typedef long long ll;

const long long INF = 1e18 + 10;
const int inf = 1e9 + 10;
const int N = 1e6 + 10;

string mask(int x, int n) {
    string mask;
    while(x) {
        mask.push_back(char((x % 2) + '0'));
        x /= 2;
    }

    reverse(mask.begin(), mask.end());

    while(mask.size() < n) {
        mask.push_back('0');
    }

    return mask;
}

int dist(int x, int y) {
    return __builtin_popcount(x ^ y);
}

void check(vector <int> ans, int k, int t) {
    for(int i = 1; i < ans.size(); i++) {
        if (dist(ans[i], ans[i - 1]) != k) {
            cout << "-1\n";
            exit(0);
        }
    }

    if (t && dist(ans.back(), ans[0]) != k) {
        cout << "-1\n";
        exit(0);
    }
}

int main() {
    cin.tie(0);
    ios::sync_with_stdio(0);

    int n, k, t;
    cin >> n >> k >> t;

    string s;
    cin >> s;

    vector <int> st;
    for(int i = 0; i < (1 << n); i++) {
        st.push_back(i ^ (i >> k));
    }

    int pos = 0;
    for(auto i : st) {
        if (mask(i, n) == s) {
            break;
        }

        pos++;
    }

    vector <int> ans;
    for(int i = pos; i < (1 << n); i++) {
        ans.push_back(st[i]);
    }

    for(int i = 0; i < pos; i++) {
        ans.push_back(st[i]);
    }

    check(ans, k, t);

    cout << ans.size() << "\n";
    for(auto i : ans) {
        cout << mask(i, n) << "\n";
    }
    return 0;
}

/*
*/

Compilation message

lyuboyn.cpp: In function 'std::__cxx11::string mask(int, int)':
lyuboyn.cpp:23:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while(mask.size() < n) {
           ~~~~~~~~~~~~^~~
lyuboyn.cpp: In function 'void check(std::vector<int>, int, int)':
lyuboyn.cpp:35:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 1; i < ans.size(); i++) {
                    ~~^~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 376 KB The values in the output sequence are not pairwise distinct!
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 376 KB Output -1 while solution exists
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 KB Ok
2 Correct 6 ms 3564 KB Ok
3 Correct 4 ms 1960 KB Ok
4 Correct 2 ms 376 KB Ok
5 Correct 2 ms 376 KB Ok
6 Correct 2 ms 380 KB Ok
7 Correct 2 ms 504 KB Ok
8 Correct 4 ms 2036 KB Ok
# 결과 실행 시간 메모리 Grader output
1 Incorrect 69 ms 7528 KB The values in the output sequence are not pairwise distinct!
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 376 KB Output -1 while solution exists
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 48 ms 3564 KB Output -1 while solution exists
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 69 ms 7528 KB The values in the output sequence are not pairwise distinct!
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 24 ms 2064 KB Output -1 while solution exists
2 Halted 0 ms 0 KB -