Submission #546347

#TimeUsernameProblemLanguageResultExecution timeMemory
546347flappybirdAncient Machine (JOI21_ancient_machine)C++17
5 / 100
61 ms8492 KiB
#include "Anna.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; #define MAX 101010 #define B1 63 #define B2 45 namespace { vector<int> arr; vector<ll> fibo = { 2, 3 }; vector<vector<int>> bukkit; } void Anna(int N, std::vector<char> S) { arr.resize(N); int i, c; c = 0; fibo.resize(B1); S.push_back(' '); for (i = 2; i < B1; i++) fibo[i] = fibo[i - 1] + fibo[i - 2]; for (i = 0; i < N; i++) { if (!c && S[i] == 'X') c = 1, arr[i] = 1, i++; if (c && S[i] == 'Z' && S[i + 1] != 'Z') arr[i] = 1; } bukkit.push_back(vector<int>()); for (i = 0; i < N; i++) { if (bukkit.back().size() == B1) bukkit.push_back(vector<int>()); bukkit.back().push_back(arr[i]); } bukkit.back().resize(B1); int bs = bukkit.size(); ll res = 0; for (i = 0; i < bs; i++) { int j; res = 0; for (j = 0; j < B1; j++) if (bukkit[i][j]) res += fibo[j]; for (j = 0; j < B2; j++) { if (res & (1ll << (ll)j)) Send(1); else Send(0); } } }
#include "Bruno.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; namespace { const int B2 = 45; const int B1 = 63; vector<ll> fibo = { 2, 3 }; } // namespace void Bruno(int N, int L, std::vector<int> A) { int K = L / B2; int i; fibo.resize(B1); for (i = 2; i < B1; i++) fibo[i] = fibo[i - 1] + fibo[i - 2]; vector<int> arr; for (i = 0; i < K; i++) { ll res = 0; ll j; for (j = 0; j < B2; j++) res += (ll)A[(ll)i * (ll)B2 + j] << (ll)j; vector<int> v; for (j = B1 - 1; j >= 0; j--) { if (res >= fibo[j]) res -= fibo[j], v.push_back(1); else v.push_back(0); } reverse(v.begin(), v.end()); for (auto x : v) arr.push_back(x); } arr.resize(N); vector<int> ones; int start = -1; for (i = 0; i < N; i++) { if (arr[i]) { start = i; break; } } if (start == -1) { for (i = 0; i < N; i++) Remove(i); return; } for (i = 0; i < N; i++) if (i != start && arr[i]) ones.push_back(i); if (ones.empty()) { for (i = 0; i < N; i++) Remove(i); return; } for (i = 0; i < start; i++) Remove(i); int pv = start; for (auto v : ones) { for (i = v - 1; i > pv; i--) Remove(i); Remove(v); pv = v; } Remove(start); for (i = pv + 1; i < N; i++) Remove(i); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...