#include "Anna.h"
#include <vector>
#include <bits/stdc++.h>
using namespace std;
void Anna(int N, vector<char> S) {
int initN = N;
for (int i = 0; i < N; i++) if (S[i] == 'X') {
if (i != N - 1 && S[i + 1] == 'Z') S[i + 1] = 'Y';
break;
}
for (int i = 0; i < N - 1; i++) {
if (S[i] == 'Z' && S[i + 1] == 'Z') S[i] = 'Y';
}
while (N % 64 != 0) S.emplace_back('Y'), ++N;
vector <bool> init(N);
int p = 0; while (p < N && S[p] != 'X') init[p] = 0, ++p;
while (p < N) {
init[p] = 1; ++p;
while (p < N && S[p] != 'Z') init[p] = 0, ++p;
}
// for (int i = 0; i < N; i++)
// cerr << init[i] << ' ';
// cerr << '\n';
vector <long long> fibo(64);
fibo[0] = 1; fibo[1] = 2;
for (int i = 2; i < 64; i++)
fibo[i] = fibo[i - 1] + fibo[i - 2];
for (int i = 0; i < N; i += 64) {
long long order = 0;
for (int j = i; j < i + 64; j++)
if (init[j]) order += fibo[i + 63 - j];
for (int bits = 44; bits >= 0; bits--)
Send((order >> bits) & 1);
// cerr << '\n' << order << '\n';
}
}
#include "Bruno.h"
#include <vector>
#include <bits/stdc++.h>
using namespace std;
void Bruno(int N, int L, vector<int> A) {
vector <long long> fibo(64);
fibo[0] = 1; fibo[1] = 2;
for (int i = 2; i < 64; i++)
fibo[i] = fibo[i - 1] + fibo[i - 2];
vector <int> decode;
for (int i = 0; i < L; i += 45) {
long long num = 0;
for (int j = i; j <= i + 44; j++)
num = num * 2 + A[j];
// cerr << '\n' << num << '\n';
for (int j = 63; j >= 0; j--) {
if (num >= fibo[j]) {
decode.emplace_back(1);
num -= fibo[j];
}
else decode.emplace_back(0);
}
}
// for (int i = 0; i < N; i++)
// cerr << decode[i] << ' ';
// cerr << '\n';
int fir = 0; while (fir < N && decode[fir] == 0) ++fir;
for (int pos = fir + 1; pos < N;) {
int st = pos; while (pos < N && decode[pos] == 0) ++pos;
for (int i = pos - 1; i >= st; i--) Remove(i);
if (pos < N) Remove(pos), ++pos;
}
for (int i = 0; i < fir; i++) Remove(i);
if (fir < N) Remove(fir);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |