Submission #1232624

#TimeUsernameProblemLanguageResultExecution timeMemory
1232624Double_SlashBroken Device (JOI17_broken_device)C++20
100 / 100
55 ms1572 KiB
#include "Annalib.h" #include <bits/stdc++.h> using namespace std; using ll = long long; void Anna(int N, ll X, int K, int P[]) { mt19937 gen; uniform_int_distribution<ll> rng(1, (1ll << 60) - 1); ll a[N]; for (ll &ai: a) ai = rng(gen); for (int i = K; i--;) a[P[i]] = 0; vector<pair<int, ll>> basis; for (int i = N; i--;) { ll b = 1ll << basis.size(); for (auto [j, k]: basis) { ll x = a[i] ^ a[j]; if (x >= a[i]) continue; a[i] = x; b ^= k; } if (a[i]) basis.emplace_back(i, b); } ll x = 0; for (auto [i, j]: basis) { if ((X ^ a[i]) >= X) continue; X ^= a[i]; x ^= j; } bool ans[N]{}; for (int j = 60; j--;) { if ((x >> j) & 1) ans[basis[j].first] = true; } for (int i = N; i--;) Set(i, ans[i]); }
#include "Brunolib.h" #include <bits/stdc++.h> using namespace std; using ll = long long; ll Bruno(int N, int A[]) { mt19937 gen; uniform_int_distribution<ll> rng(1, (1ll << 60) - 1); ll a[N]; for (ll &ai: a) ai = rng(gen); ll x = 0; for (int i = N; i--;) x ^= a[i] * A[i]; return x; }
#Verdict Execution timeMemoryGrader output
Fetching results...