Submission #1199158

#TimeUsernameProblemLanguageResultExecution timeMemory
1199158mychecksedadAncient Machine (JOI21_ancient_machine)C++20
99 / 100
197 ms11224 KiB
#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; } } } const int MX = 91, MXB = 64; 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 += MX){ unsigned long long num = 0; for(int j = i; j < min(i + MX, n); ++j){ num += A[j]*(fib[j-i]); } bitset<MXB> b(num); for(int j = 0; j < MXB; ++j) t += char(b[j] + '0'); } 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; const int MX = 91, MXB = 64; vector<unsigned long long> fib(100); fib[0] = 1; fib[1] = 2; for(int i = 2; i < 95; ++i) fib[i] = fib[i - 1] + fib[i - 2]; for(int i = 17; i < L; i += MXB){ unsigned long long num = 0; for(int j = i; j < min(i+MXB, L); ++j){ num += (1ull<<(j-i))*B[j]; } vi C; for(int j = MX-1; 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]){ 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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...