제출 #999090

#제출 시각아이디문제언어결과실행 시간메모리
999090AdamGSBroken Device (JOI17_broken_device)C++17
79 / 100
35 ms2908 KiB
#include "Annalib.h" #include<bits/stdc++.h> using namespace std; typedef long long ll; #define rep(a, b) for(int a = 0; a < (b); ++a) #define st first #define nd second #define pb push_back #define all(a) a.begin(), a.end() void Anna(int n, ll x, int k, int P[]) { mt19937 rng(2137); vector<int>S(n); rep(i, n) S[i]=i; rep(i, n) swap(S[i], S[rng()%(i+1)]); rep(i, 60) if(rng()&1) x^=1ll<<(ll)i; vector<int>czy(n), T(n); rep(i, k) czy[P[i]]=1; ll akt=0; rep(i, 60) { ll a=x%3; x/=3; while(akt<n && (akt%3!=a || czy[S[akt]])) ++akt; if(akt==n) break; T[S[akt]]=1; ++akt; } rep(i, n) Set(i, T[i]); }
#include "Brunolib.h" #include<bits/stdc++.h> using namespace std; typedef long long ll; #define rep(a, b) for(int a = 0; a < (b); ++a) #define st first #define nd second #define pb push_back #define all(a) a.begin(), a.end() ll Bruno(int n, int A[]) { mt19937 rng(2137); vector<int>S(n); rep(i, n) S[i]=i; rep(i, n) swap(S[i], S[rng()%(i+1)]); ll x=0, p=1; rep(i, n) if(A[S[i]]) { x+=p*(ll)(i%3); p*=3; } rep(i, 60) if(rng()&1) x^=1ll<<(ll)i; return x; }
#Verdict Execution timeMemoryGrader output
Fetching results...