#include "Anna.h"
#include <bits/stdc++.h>
using namespace std;
const int N = 63;
void Anna(int n, vector<char> S) {
vector<long long> f(100, 0);
vector<int> a(n + 5, 0);
f[0] = 1, f[1] = 2;
for(int i = 2; i <= 63; i++) f[i] = f[i - 1] + f[i - 2];
bool check = false;
for(int i = 0; i < n; i++) {
char x = S[i];
if(x == 'X' && !check) {
check = true;
a[i] = 1;
continue;
}
if(!check) a[i] = 0;
else {
if(x == 'X' || x == 'Y') a[i] = 0;
else a[i] = 1;
}
}
for(int i = 1; i < n; i++) {
if(a[i] && a[i - 1]) a[i - 1] = 0;
}
//for(int i = 0; i < n; i++) cout << a[i] << ' ';
// cout << '\n';
for(int i = 0; i < n; i += 63) {
long long sum = 0;
for(int len = 0; i + len < n && len <= 62; len++) {
if(a[i + len]) sum += f[len];
}
for(int j = 0; j <= 43; j++) {
if((sum >> j) & 1) Send(1);
else Send(0);
}
}
}
#include "Bruno.h"
#include <bits/stdc++.h>
using namespace std;
void Bruno(int n, int L, vector<int> A) {
vector<long long> f(100, 0);
vector<int> a(n + 100, 0);
f[0] = 1, f[1] = 2;
for(int i = 2; i <= 63; i++) f[i] = f[i - 1] + f[i - 2];
int pre = 0;
for(int i = 0; i < n; i += 63) {
long long sum = 0;
for(int j = pre; j <= pre + 43; j++) if(A[j]) sum |= (1LL << (j - pre));
pre += 44;
for(int len = 62; len >= 0; len--) {
if(sum >= f[len]) a[i + len] = 1, sum -= f[len];
}
}
//for(int i = 0; i < n; i++) cout << a[i] << ' ';
//cout << '\n';
bool check = false;
int pos = -1;
stack<int> st;
for(int i = 0; i < n; i++) {
// cout << 1111 << " " << A[i] << ' ';
if(a[i] == 1 && !check) {
check = true;
pos = i;
continue;
}
if(!check) {
Remove(i);
continue;
}
if(a[i] == 1) {
while(!st.empty()) Remove(st.top()), st.pop();
Remove(i);
}
else st.push(i);
}
while(!st.empty()) Remove(st.top()), st.pop();
if(pos != -1) Remove(pos);
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |