제출 #1169397

#제출 시각아이디문제언어결과실행 시간메모리
1169397nhphucAncient Machine (JOI21_ancient_machine)C++20
0 / 100
33 ms6128 KiB
#include <bits/stdc++.h> #include "Anna.h" using namespace std; long long f[70][2]; void init (){ f[1][0] = f[1][1] = f[2][1] = 1; f[2][0] = 2; for (int i = 3; i <= 69; ++i){ f[i][0] = f[i - 1][0] + f[i - 1][1]; f[i][1] = f[i - 1][0]; } return; } long long find_lex (string &s, int l, int r){ long long k = 0; for (int i = l; i <= r; ++i){ if (s[i] == '1'){ k += f[(r - i + 1)][0]; } } return k; } void Anna (int n, vector<char> a){ init(); string s; bool stx = false; for (int i = 0; i <= n - 1; ++i){ if (a[i] == 'X'){ if (stx == false){ s += "10"; stx = true; } else { s += '0'; } } else { if (a[i] == 'Z' && stx){ if (s.back() == '1'){ s.back() = '0'; } s += '1'; } else { s += '0'; } } } while (s.size() % 64 != 0){ s += '0'; } for (int i = 0; i < s.size(); i += 64){ long long lex = find_lex(s, i, i + 63); for (int j = 0; j <= 43; ++j){ if (lex & (1ll << j)){ Send(1); } else { Send(0); } } } }
#include <bits/stdc++.h> #include "Bruno.h" using namespace std; long long f[70][2]; void init (){ f[1][0] = f[1][1] = f[2][1] = 1; f[2][0] = 2; for (int i = 3; i <= 69; ++i){ f[i][0] = f[i - 1][0] + f[i - 1][1]; f[i][1] = f[i - 1][0]; } return; } string decode_lex (long long k){ if (f[1][0] == 0){ init(); } string ans; for (int i = 64; i >= 1; --i){ if (k >= f[i][0]){ ans += '1'; k -= f[i][0]; } else { ans += '0'; } } return ans; } void Bruno (int n, int l, vector<int> a){ init(); string s; for (int i = 0; i <= l; i += 44){ long long k = 0; for (int j = i; j <= i + 43; ++j){ if (a[j]){ k += (1ll << (j - i)); } } s += decode_lex(k); } vector<int> pos; for (int i = 0; i <= n; ++i){ if (s[i] == '1'){ pos.push_back(i); } } if (pos.size() <= 1){ for (int i = 0; i <= n - 1; ++i){ Remove(i); } return; } for (int i = 0; i < pos[0]; ++i){ Remove(i); } for (int i = pos.back(); i <= n - 1; ++i){ Remove(i); } for (int i = 1; i < pos.size(); ++i){ --pos[i]; for (int j = pos[i] - 1; j > pos[i - 1]; --j){ Remove(j); } Remove(pos[i]); } Remove(pos[0]); return; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...