Submission #1316667

#TimeUsernameProblemLanguageResultExecution timeMemory
1316667tvgkAncient Machine (JOI21_ancient_machine)C++20
99 / 100
40 ms6460 KiB
#include<bits/stdc++.h> #include "Anna.h" #include <vector> using namespace std; #define task "a" #define se second #define fi first #define ll long long #define ii pair<ll, ll> const long mxN = 2e5 + 7, inf = 1e9 + 7; static ll fibo[100]; void Anna(int n, std::vector<char> s) { int stt = -1; vector<bool> bit; for (int i = 0; i < s.size(); i++) { if (s[i] == 'X' && stt == -1) stt = i; if (s[i] == 'Z' && bit.size()) { bit.back() = 0; bit.push_back(1); } else bit.push_back(0); } stt = max(0, stt); for (int i = 0; i <= __lg(n); i++) Send((stt >> i) & 1); fibo[0] = 1; fibo[1] = 2; ll sum = 0; for (int i = 2; i <= 50; i++) { fibo[i] = fibo[i - 1] + fibo[i - 2]; sum += fibo[i]; } for (int i = 0; i < bit.size(); i += 50) { ll sum = 0; for (int j = 0; j < 50; j++) { if (i + j >= bit.size()) break; sum += fibo[j] * bit[i + j]; } for (int i = 0; i < 35; i++) Send((sum >> i) & 1); } }
#include "Bruno.h" #include <vector> #include<bits/stdc++.h> using namespace std; #define task "a" #define se second #define fi first #define ll long long #define ii pair<ll, ll> const long mxN = 2e5 + 7; static ll fibo[mxN]; void Bruno(int n, int l, std::vector<int> a) { fibo[0] = 1; fibo[1] = 2; ll sum = 0; for (int i = 2; i <= 50; i++) { fibo[i] = fibo[i - 1] + fibo[i - 2]; sum += fibo[i]; } string s; for (int i = __lg(n) + 1; i < a.size(); i += 35) { ll sum = 0; for (int j = 0; j < 35; j++) sum += (1LL * a[i + j]) << j; string t; for (int j = 49; j >= 0; j--) { if (sum >= fibo[j]) { sum -= fibo[j]; t += 'Z'; } else t += 'Y'; } reverse(t.begin(), t.end()); s += t; } int tmp = 0; for (int i = 0; i <= __lg(n); i++) tmp += (a[i] << i); s[tmp] = 'X'; stack<int> stk; int stt = -1; for (int i = 0; i < n; i++) { if (s[i] == 'X' && stt == -1) stt = i; if (stt == -1) { Remove(i); continue; } if (s[i] == 'Z') { while (stk.size() > 1) { Remove(stk.top()); stk.pop(); } Remove(i); } else stk.push(i); } while (stk.size()) { Remove(stk.top()); stk.pop(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...