#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
vector<unsigned long long> fib(100);
fib[0] = 1;
fib[1] = 2;
for(int i = 2; i < 93; ++i) fib[i] = fib[i - 1] + fib[i - 2];
string t;
for(int i = 0; i < n; i += 92){
unsigned long long num = 0;
for(int j = i; j < min(i + 92, n); ++j){
num += A[j]*(fib[j-i]);
}
bitset<61> b(num);
cerr << num << '\n';
for(int j = 0; j < 61; ++j) t += (b[j] + '0');
}
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;
vector<unsigned long long> fib(100);
fib[0] = 1;
fib[1] = 2;
for(int i = 2; i < 93; ++i) fib[i] = fib[i - 1] + fib[i - 2];
for(int i = 17; i < L; i += 61){
unsigned long long num = 0;
for(int j = i; j < min(i+61, L); ++j){
num += (1ull<<(j-i))*B[j];
}
vi C;
for(int j = 91; j >= 0; --j){
if(num >= fib[j]){
C.pb(1);
num -= fib[j];
}else C.pb(0);
}
reverse(all(C));
for(int x: C) A.pb(x);
}
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... |