Submission #549509

#TimeUsernameProblemLanguageResultExecution timeMemory
549509LucaDantasBroken Device (JOI17_broken_device)C++17
100 / 100
68 ms2720 KiB
#include "Annalib.h" #include <bits/stdc++.h> using namespace std; constexpr int maxn = 150; mt19937_64 rng_64(1012); long long rnd() { return rng_64() & ((1ll<<60)-1); } // construo um numero aleatorio de 60 bits bool foi = 0; long long v[maxn]; void build() { foi = 1; for(int i = 0; i < maxn; i++) v[i] = rnd(); } vector<pair<long long, bitset<maxn>>> basis; bitset<maxn> ids; void insert(long long x, int ID) { ids.reset(); if(ID != -1) ids.set(ID); for(auto [y, usados] : basis) { if((x^y) < x) { x ^= y; ids ^= usados; } } if(x) basis.push_back({x, ids}); } void Anna(int N, long long X, int K, int P[]) { if(!foi) build(); basis.clear(); for(int i = 0, ptr = 0; i < maxn; i++) { if(ptr < K && P[ptr] == i) { ++ptr; continue; } insert(v[i], i); } insert(X, -1); for(int i = 0; i < N; i++) Set(i, ids.test(i)); }
#include "Brunolib.h" #include <cstdio> #include <random> namespace sla { constexpr int maxn = 150; std::mt19937_64 rng_64(1012); long long rnd() { return rng_64() & ((1ll<<60)-1); } // construo um numero aleatorio de 60 bits bool foi = 0; long long v[maxn]; void build() { foi = 1; for(int i = 0; i < maxn; i++) v[i] = rnd(); } } long long Bruno(int N, int A[]) { if(!sla::foi) sla::build(); long long ans = 0; for(int i = 0; i < N; i++) if(A[i]) ans ^= sla::v[i]; return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...