Submission #1141057

#TimeUsernameProblemLanguageResultExecution timeMemory
1141057binminh01Ancient Machine (JOI21_ancient_machine)C++20
100 / 100
41 ms6356 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long #define ull unsigned long long #define int128 __int128_t #define double long double #define gcd __gcd #define lcm(a, b) ((a)/gcd(a, b)*(b)) #define sqrt sqrtl #define log2 log2l #define log10 log10l #define floor floorl #define to_string str #define yes cout << "YES" #define no cout << "NO" #define trav(i, a) for (auto &i: (a)) #define all(a) (a).begin(), (a).end() #define rall(a) (a).rbegin(), (a).rend() #define sz(a) (int)a.size() #define Max(a) *max_element(all(a)) #define Min(a) *min_element(all(a)) #define Find(a, n) (find(all(a), n) - a.begin()) #define Count(a, n) count(all(a), n) #define Upper(a, n) (upper_bound(all(a), n) - a.begin()) #define Lower(a, n) (lower_bound(all(a), n) - a.begin()) #define next_perm(a) next_permutation(all(a)) #define prev_perm(a) prev_permutation(all(a)) #define sorted(a) is_sorted(all(a)) #define sum(a) accumulate(all(a), 0) #define sumll(a) accumulate(all(a), 0ll) #define Sort(a) sort(all(a)) #define Reverse(a) reverse(all(a)) #define Unique(a) Sort(a), (a).resize(unique(all(a)) - a.begin()) #define pb push_back #define eb emplace_back #define popcount __builtin_popcount #define popcountll __builtin_popcountll #define clz __builtin_clz #define clzll __buitlin_clzll #define ctz __builtin_ctz #define ctzll __builtin_ctzll #define open(s) freopen(s, "r", stdin) #define write(s) freopen(s, "w", stdout) #define fileopen(s) open((string(s) + ".inp").c_str()), write((string(s) + ".out").c_str()); #define For(i, a, b) for (auto i = (a); i < (b); ++i) #define Fore(i, a, b) for (auto i = (a); i >= (b); --i) #define FOR(i, a, b) for (auto i = (a); i <= (b); ++i) #define ret(s) return void(cout << s); typedef vector<int> vi; typedef vector<vi> vvi; typedef vector<ll> vll; typedef vector<vll> vvll; typedef vector<double> vdo; typedef vector<vdo> vvdo; typedef vector<string> vs; typedef vector<pair<int, int>> vpair; typedef vector<vpair> vvpair; typedef vector<bool> vb; typedef vector<vb> vvb; typedef vector<char> vc; typedef vector<vc> vvc; typedef vector<complex<double>> vcd; typedef priority_queue<int> pq; typedef priority_queue<int, vi, greater<int>> pqg; typedef priority_queue<ll> pqll; typedef priority_queue<ll, vll, greater<ll>> pqgll; #include "Anna.h" void Anna(int n, vc a) { vll f(66); f[1] = 1; FOR(i,2,65) f[i] = f[i - 1] + f[i - 2]; int l = n; For(i,0,n) if (a[i] == 'X') {l = i; break;} vi s(n); auto send = [&]() { For(i,0,18) Send(l >> i & 1); for (int i = 0; i < n; i+=63) { int k = min(i + 62, n - 1); ll x = 0; FOR(j,i,k){ if (s[j]) x+=f[k - j + 2]; } For(j,0,44) Send(x >> j & 1); } }; if (l == n) {send(); return;} int r = l; while (1) { int t = -1; For(i,r+1,n) if (a[i] == 'Z') {t = i; break;} if (t == -1) break; r = t; while (1) { if (r == n - 1 || a[r + 1] != 'Z') {s[r] = 1; break;} ++r; } } send(); }
#include<bits/stdc++.h> using namespace std; #define ll long long #define ull unsigned long long #define int128 __int128_t #define double long double #define gcd __gcd #define lcm(a, b) ((a)/gcd(a, b)*(b)) #define sqrt sqrtl #define log2 log2l #define log10 log10l #define floor floorl #define to_string str #define yes cout << "YES" #define no cout << "NO" #define trav(i, a) for (auto &i: (a)) #define all(a) (a).begin(), (a).end() #define rall(a) (a).rbegin(), (a).rend() #define sz(a) (int)a.size() #define Max(a) *max_element(all(a)) #define Min(a) *min_element(all(a)) #define Find(a, n) (find(all(a), n) - a.begin()) #define Count(a, n) count(all(a), n) #define Upper(a, n) (upper_bound(all(a), n) - a.begin()) #define Lower(a, n) (lower_bound(all(a), n) - a.begin()) #define next_perm(a) next_permutation(all(a)) #define prev_perm(a) prev_permutation(all(a)) #define sorted(a) is_sorted(all(a)) #define sum(a) accumulate(all(a), 0) #define sumll(a) accumulate(all(a), 0ll) #define Sort(a) sort(all(a)) #define Reverse(a) reverse(all(a)) #define Unique(a) Sort(a), (a).resize(unique(all(a)) - a.begin()) #define pb push_back #define eb emplace_back #define popcount __builtin_popcount #define popcountll __builtin_popcountll #define clz __builtin_clz #define clzll __buitlin_clzll #define ctz __builtin_ctz #define ctzll __builtin_ctzll #define open(s) freopen(s, "r", stdin) #define write(s) freopen(s, "w", stdout) #define fileopen(s) open((string(s) + ".inp").c_str()), write((string(s) + ".out").c_str()); #define For(i, a, b) for (auto i = (a); i < (b); ++i) #define Fore(i, a, b) for (auto i = (a); i >= (b); --i) #define FOR(i, a, b) for (auto i = (a); i <= (b); ++i) #define ret(s) return void(cout << s); typedef vector<int> vi; typedef vector<vi> vvi; typedef vector<ll> vll; typedef vector<vll> vvll; typedef vector<double> vdo; typedef vector<vdo> vvdo; typedef vector<string> vs; typedef vector<pair<int, int>> vpair; typedef vector<vpair> vvpair; typedef vector<bool> vb; typedef vector<vb> vvb; typedef vector<char> vc; typedef vector<vc> vvc; typedef vector<complex<double>> vcd; typedef priority_queue<int> pq; typedef priority_queue<int, vi, greater<int>> pqg; typedef priority_queue<ll> pqll; typedef priority_queue<ll, vll, greater<ll>> pqgll; #include "Bruno.h" void Bruno(int n, int m, vi a) { vll f(66); f[1] = 1; FOR(i,2,65) f[i] = f[i - 1] + f[i - 2]; vb d(n); auto del = [&](int i) { d[i] = 1; Remove(i); }; auto clear = [&]() { For(i,0,n) if (!d[i]) del(i); }; int l = 0; For(i,0,18) if (a[i]) l^=1 << i; vi s(n); int id = 18; for (int i = 0; i < n; i+=63) { ll x = 0; For(j,0,44) if (a[id++]) x^=1ll << j; int k = min(i + 62, n - 1); FOR(j,i,k){ if (x >= f[k - j + 2]) s[j] = 1, x-=f[k - j + 2]; } } if (l == n) {clear(); return;} int r = l; while (1) { int t = -1; For(i,r+1,n) if (s[i]) {t = i; break;} if (t == -1) break; Fore(i,t-1,r+1) del(i); del(r = t); } clear(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...