제출 #441181

#제출 시각아이디문제언어결과실행 시간메모리
4411818e7"The Lyuboyn" code (IZhO19_lyuboyn)C++14
100 / 100
327 ms7432 KiB
//Challenge: Accepted #include <iostream> #include <vector> #include <iomanip> #include <algorithm> #include <queue> #include <cmath> #include <set> #include <utility> #include <assert.h> using namespace std; void debug() {cout << endl;} template <class T, class ...U> void debug(T a, U ... b) { cout << a << " "; debug(b...);} template <class T> void pary(T l, T r) { while (l != r) {cout << *l << " ";l++;} cout << endl; } #define ll long long #define ld long double #define maxn 400005 #define mod 1000000007 #define pii pair<int, int> #define ff first #define ss second #define io ios_base::sync_with_stdio(0);cin.tie(0); vector<int> ans, v; void build(int n) { v.push_back(0); int cur = 0; for (int i = 1;i < (1<<n);i++) { cur ^= i & (-i); v.push_back(cur); } } void print(int x, int n) { for (int i = 0;i < n;i++) cout << ((x & (1<<i)) ? 1 : 0); cout << "\n"; } void solve(int n, int k, int se) { //debug(n, k); //print(se, 6); if (n == k + 1) { for (int i = 0;i < v.size();i++) ans.push_back(se ^ v[i]); return; } solve(n - 1, k, se); int cnt = 0, tmp = ans.back() ^ se; for (int i = 0;i < n;i++) { if ((ans.back() ^ se) & (1<<i)) { if (cnt < k - 1) tmp ^= (1<<i), cnt++; } } tmp ^= (1<<(n - 1)); solve(n - 1, k, se ^ tmp); } int main() { io int n, k, cy; cin >> n >> k >> cy; int st = 0; for (int i = 0;i < n;i++) { char c; cin >> c; st += (1<<i) * (c - '0'); } if (k % 2 == 0) { cout << -1 << "\n"; return 0; } cout << (1<<n) << "\n"; if (k == 1) { build(n); for (int i = 0;i < (1<<n);i++) print(v[i] ^ st, n); } else { build(k + 1); for (int i = 1;i < (1<<(k + 1));i+=2) { v[i] ^= (1<<(k + 1)) - 1; } solve(n, k, 0); for (int i:ans) print(i ^ st, n); } }

컴파일 시 표준 에러 (stderr) 메시지

lyuboyn.cpp: In function 'void solve(int, int, int)':
lyuboyn.cpp:43:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   43 |   for (int i = 0;i < v.size();i++) ans.push_back(se ^ v[i]);
      |                  ~~^~~~~~~~~~
#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...