Submission #1199140

#TimeUsernameProblemLanguageResultExecution timeMemory
1199140mychecksedadAncient Machine (JOI21_ancient_machine)C++20
5 / 100
222 ms7244 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; } } } 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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...