Submission #898965

# Submission time Handle Problem Language Result Execution time Memory
898965 2024-01-05T10:21:37 Z vjudge1 "The Lyuboyn" code (IZhO19_lyuboyn) C++17
0 / 100
1000 ms 1372 KB
#include <bits/stdc++.h>
using namespace std;

#define all(x) x.begin(), x.end()

const int Z = 1000;

mt19937 rng(time(nullptr));

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

signed main() {
  ios::sync_with_stdio(false); cin.tie(nullptr);

  cin >> n >> k >> t >> ss;
  
  s = 0;
  for (int i = 0; i < n; i++) {
    s += (1 << (n-i-1)) * (ss[i] == '1');
  }

  vector<int> ans(1 << n);
  for (int i = 0; i < (1 << n); i++) {
    ans[i] = i;
    if (i == s) swap(ans[0], ans[i]);
  }

  bool ok = 0;
  shuffle(ans.begin()+1, ans.end(), rng);
  for (int z = 0; z < Z; z++) {
    int x = -1;
    for (int i = 0; i+1 < (1 << n); i++) {
      if (__builtin_popcount(ans[i] ^ ans[i-1]) != k) {
        x = i;
        break;
      }
    }

    if (x == -1) {
      ok = 1;
      break;
    }

    int y = -1;
    for (int i = x+2; i+1 < (1 << n); i++) {
      if (__builtin_popcount(ans[i] ^ ans[i-1]) != k && 
      __builtin_popcount(ans[x] ^ ans[i]) == k && 
      __builtin_popcount(ans[x+1] ^ ans[i+1]) == k) {
        y = i;
        break;
      }
    }

    reverse(ans.begin()+x+1, ans.begin()+y);
  }
  
  if (!ok) cout << "-1\n";
  else {
    cout << (1 << n) << "\n";
    for (int i = 0; i < (1 << n); i++) {
      for (int j = 0; j < n; j++) {
        if ((ans[i] >> (n-j-1)) & 1) ss[j] = '1';
        else ss[j] = '0';
      }
      cout << ss << "\n";
    }
  }
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 600 KB Ok
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 348 KB Output -1 while solution exists
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 43 ms 348 KB Ok
2 Execution timed out 1020 ms 1368 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1054 ms 1372 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 344 KB Output -1 while solution exists
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 6 ms 1372 KB Output -1 while solution exists
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1054 ms 1372 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 648 ms 856 KB Output -1 while solution exists
2 Halted 0 ms 0 KB -