Submission #1137811

#TimeUsernameProblemLanguageResultExecution timeMemory
1137811huutuanBroken Device 2 (JOI22_device2)C++20
0 / 100
241 ms11884 KiB
#include "Anna.h" #include <utility> #include <vector> #include <bits/stdc++.h> using namespace std; namespace Anna_solver{ const int M=2000, L1=15, L0=15; vector<int> v[64]; int Declare(){ return M; } mt19937 rng(69420); void gen(){ if (v[0].size()) return; for (int i=0; i<64; ++i){ v[i]=vector<int>(L1+L0); fill(v[i].begin(), v[i].begin()+L1, 1); shuffle(v[i].begin()+1, v[i].end(), rng); } } pair<vector<int>, vector<int>> Anna(unsigned long long A){ gen(); unsigned long long val=uniform_int_distribution<unsigned long long>(0, ULLONG_MAX)(rng); A^=val; vector<int> vv; for (int i=0; i<64; ++i) if (A>>i&1) vv.insert(vv.end(), v[i].begin(), v[i].end()); return {vv, vector<int>(vv.size(), 0)}; } } int Declare() { return Anna_solver::Declare(); } std::pair<std::vector<int>, std::vector<int> > Anna(long long A) { return Anna_solver::Anna(A); }
#include "Bruno.h" #include <utility> #include <vector> #include <bits/stdc++.h> using namespace std; namespace Bruno_solver{ const int M=2000, L1=15, L0=15; vector<int> v[64]; mt19937 rng(69420); void gen(){ if (v[0].size()) return; for (int i=0; i<64; ++i){ v[i]=vector<int>(L1+L0); fill(v[i].begin(), v[i].begin()+L1, 1); shuffle(v[i].begin()+1, v[i].end(), rng); } } bool match(vector<int> va, vector<int> vb){ int id=0; for (int i:vb) if (id<(int)va.size() && i==va[id]) ++id; return id==(int)va.size(); } long long Bruno(vector<int> vv){ gen(); unsigned long long val=uniform_int_distribution<unsigned long long>(0, ULLONG_MAX)(rng); unsigned long long ans=0; int id=0, i=0; while (id<(int)vv.size()){ vector<int> u; int cnt1=0; while (cnt1<L1){ u.push_back(vv[id]); cnt1+=vv[id]; ++id; } while (id<(int)vv.size() && !vv[id]) ++id, u.push_back(0); while (i<64 && !match(v[i], u)) ++i; if (i<64) ans|=1ull<<i; } return ans^val; } } long long Bruno(std::vector<int> u) { return Bruno_solver::Bruno(u); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...