Submission #21550

#TimeUsernameProblemLanguageResultExecution timeMemory
21550UshioBroken Device (JOI17_broken_device)C++14
63 / 100
72 ms4644 KiB
#include "Annalib.h" #include <algorithm> #include <iostream> #include <cstdlib> #include <vector> using namespace std; const int FCT = 2; void Anna( int N, long long X, int K, int P[] ){ vector<int> per(N + FCT); srand(141417941L); for (int i = 0; i < N + FCT; ++i) { per[i] = i; } for (int i = 0; i < N; ++i) { int pos = i + rand() % (N - i); swap(per[i], per[pos]); } int bit = 0; int validity = 0; vector<bool> bad(N + FCT, false); for (int i = 0; i < FCT; ++i) { bad[per[N + i]] = true; } for (int i = 0; i < K; ++i) { bad[P[i]] = true; } for (int i = 0; i < N; ++i) { if (validity == 0) { bool ok = false; for (int j = 0; j <= FCT; ++j) { ok |= bad[per[i + j]]; } if (ok) { Set(per[i], 0); validity = 0; } else { Set(per[i], 1); validity = FCT; } } else { if (bit <= 59) { if (X & (1LL << bit)) { Set(per[i], 1); } else { Set(per[i], 0); } bit++; } else { Set(per[i], 0); } validity--; } } cerr << "In: " << X << endl; }
#include "Brunolib.h" #include <algorithm> #include <iostream> #include <cstdlib> #include <vector> using namespace std; const int FCT = 2; long long Bruno( int N, int A[] ){ vector<int> per(N + 1); srand(141417941L); for (int i = 0; i < N + 1; ++i) { per[i] = i; } for (int i = 0; i < N; ++i) { int pos = i + rand() % (N - i); swap(per[i], per[pos]); } int validity = 0; int bit = 0; int64_t ans = 0; for (int i = 0; i < N; ++i) { if (validity == 0) { validity = A[per[i]] * FCT; } else { if (bit <= 59) { ans |= ((int64_t) A[per[i]]) << bit; ++bit; } validity--; } } cerr << "Out: " << ans << endl; return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...