Submission #1056427

#TimeUsernameProblemLanguageResultExecution timeMemory
1056427juicyAncient Machine (JOI21_ancient_machine)C++17
0 / 100
4 ms2004 KiB
#include "Anna.h" #include <bits/stdc++.h> using namespace std; namespace { } void Anna(int N, std::vector<char> S) { int B = 63, K = 44; vector<long long> fib(B); fib[0] = fib[1] = 1; for (int i = 2; i < B; ++i) { fib[i] = fib[i - 1] + fib[i - 2]; } auto encode = [&](vector<int> msg) { long long res = 0; for (int i = 0; i < B; ++i) { res += msg[i] * fib[i]; } return res; }; int p = 0; vector<int> msg; while (p < N && S[p] != 'X') { ++p; msg.push_back(0); } if (p < N) { msg.push_back(1); msg.push_back(0); ++p; } for (; p < N; ++p) { if (S[p] == 'Z' && (p + 1 == N || S[p + 1] != S[p])) { msg.push_back(1); } else { msg.push_back(0); } } while (msg.size() % B) { msg.push_back(0); } for (int i = 0; i < msg.size(); i += B) { auto x = encode(vector(msg.begin() + i, msg.begin() + B)); for (int j = 0; j < K; ++j) { Send(x >> j & 1); } } }
#include "Bruno.h" #include <bits/stdc++.h> using namespace std; namespace { } void Bruno(int N, int L, std::vector<int> A) { int B = 63, K = 44; vector<long long> fib(B); fib[0] = fib[1] = 1; for (int i = 2; i < B; ++i) { fib[i] = fib[i - 1] + fib[i - 2]; } auto decode = [&](long long x) { string msg; for (int i = B - 1; i >= 0; --i) { if (x >= fib[i]) { msg += '1'; x -= fib[i]; } else { msg += '0'; } } reverse(msg.begin(), msg.end()); return msg; }; string S; for (int i = 0; i < L; i += B) { long long x = 0; for (int j = 0; j < B; ++j) { x += A[i + j] << j; } S += decode(x); } int p = 0; while (p < N && S[p] == '0') { Remove(p++); } if (p == N) { return; } int i = p + 2, lst = i; for (; i <= N; ++i) { if (S[i] == '1') { for (int j = i - 1; j >= lst; --j) { Remove(j - 1); } Remove(i - 1); lst = i + 1; } } for (i = N; i >= lst; --i) { Remove(i - 1); } Remove(p); }

Compilation message (stderr)

Anna.cpp: In function 'void Anna(int, std::vector<char>)':
Anna.cpp:46:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   46 |   for (int i = 0; i < msg.size(); i += B) {
      |                   ~~^~~~~~~~~~~~

Bruno.cpp: In function 'void Bruno(int, int, std::vector<int>)':
Bruno.cpp:12:15: warning: unused variable 'K' [-Wunused-variable]
   12 |   int B = 63, K = 44;
      |               ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...