#include "Anna.h"
/* Author : Mychecksdead  */
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
#define MOD (1000000000+7)
#define MOD1 (998244353)
#define pb push_back
#define all(x) x.begin(), x.end()
#define en cout << '\n'
#define ff first
#define ss second
#define pii pair<int,int>
#define vi vector<int>
const int N = 2000+100, M = 1e5+10, K = 52, MX = 30;
namespace {
int variable_example = 0;
}
void Anna(int n, std::vector<char> S) {
  stack<pair<int, char>> st;
  vector<bool> A(n);
  int nice = 0;
  for(int i = 0; i < n; ++i){
    if(st.empty() && S[i] == 'X'){
      // A[i] = 1;
      nice = i;
      st.push({i, S[i]});
    }else{
      if(st.empty()) continue;
      if(S[i] == 'Z'){
        if(S[i - 1] == 'Z') A[i - 1] = 0;
        A[i] = 1;
      }
    }
  }
  bitset<17> b(nice);
  for(int i = 0; i < 17; ++i) Send(b[i]);
  // divide into 4's
  map<int, string> m;
  m[0] = "000";
  m[1] = "001";
  m[2] = "010";
  m[4] = "011";
  m[8] = "100";
  m[9] = "101";
  m[10] = "110";
  m[5] = "111";
  string t;
  for(int i = 0; i < n; i += 4){
    int num = 0;
    for(int j = i; j < min(i + 4, n); ++j){
      num += (1<<(3-(j-i)))*A[j];
    }
    // cerr << num << '\n';
    t += m[num];
  }
  cerr << t << '\n';
  for(int i = 0; i < t.length(); ++i) Send(t[i] == '1');
}
#include "Bruno.h"
/* Author : Mychecksdead  */
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
#define MOD (1000000000+7)
#define MOD1 (998244353)
#define pb push_back
#define all(x) x.begin(), x.end()
#define en cout << '\n'
#define ff first
#define ss second
#define pii pair<int,int>
#define vi vector<int>
const int N = 2000+100, M = 1e5+10, K = 52, MX = 30;
namespace {
int variable_example = 0;
int FunctionExample(int P) { return 1 - P; }
}  // namespace
void Bruno(int n, int L, std::vector<int> B) {
  vector<int> A, R;
  set<int> s;
  map<int, string> m;
  m[0] = "0000";
  m[1] = "0001";
  m[2] = "0010";
  m[3] = "0100";
  m[4] = "1000";
  m[5] = "1001";
  m[6] = "1010";
  m[7] = "0101";
  for(int i = 17; i < L; i += 3){
    int num = 0;
    for(int j = i; j < min(i+3, L); ++j){
      num += (1<<(2-(j-i)))*B[j];
    }
    string t = m[num];
    for(int j = 0; j < 4; ++j) A.pb(t[j] == '1');
  }
  cerr << '\n';
  for(int x: A) cerr << x << ' ';
  int f = 0;
  for(int i = 0; i < 17; ++i) f += (1<<i)*B[i];
  A[f] = 1;
  for(int i = 0; i < n; ++i){
    if(A[i]){
      cerr << "ni ce" << i << '\n';
      R.pb(i);
      s.insert(i);
    }else{
      if(R.empty()) Remove(i);
      else s.insert(i);
    }
  }
  if(R.empty()) return;
  int lst = R[0];
  for(int i = 1; i < R.size(); ++i){
    for(int j = R[i] - 1; j > lst; --j){
      Remove(j);
      s.erase(j);
    }
    s.erase(R[i]);
    Remove(R[i]);
    lst = R[i];
  }
  for(int x: s) Remove(x);
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |