Submission #546364

#TimeUsernameProblemLanguageResultExecution timeMemory
546364flappybirdAncient Machine (JOI21_ancient_machine)C++17
100 / 100
68 ms8648 KiB
#include "Anna.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; #define MAX 101010 #define B1 63 #define B2 44 namespace { vector<int> arr; vector<ll> fibo = { 1, 2 }; 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]; int start = N; for (i = 0; i < N; i++) { if (!c && S[i] == 'X') c = 1, start = i; else 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); } } for (i = 0; i < 17; i++) Send((bool)((1 << i) & start)); }
#include "Bruno.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; namespace { const int B1 = 63; const int B2 = 44; vector<ll> fibo = { 1, 2 }; } // namespace void Bruno(int N, int L, std::vector<int> A) { vector<int> sv; int i; for (i = 0; i < 17; i++) sv.push_back(A.back()), A.pop_back(); reverse(sv.begin(), sv.end()); int start = 0; for (i = 0; i < 17; i++) start += sv[i] * (1 << i); L = A.size(); if (start == N) start = -1; int K = L / B2; 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; if (start == -1) { for (i = 0; i < N; i++) Remove(i); return; } for (i = 0; i < N; i++) if (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...